C# 中展示Adaptive Card (WPF)
string filepath = System.AppDomain.CurrentDomain.BaseDirectory + "text\\message.json";
bool IsExists = System.IO.File.Exists(filepath);
if (IsExists)
{
string json = string.Empty;
using (FileStream fs = new FileStream(filepath, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite))
{
using (StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("gb2312")))
{
json = sr.ReadToEnd().ToString();
}
}
Content content = JsonConvert.DeserializeObject<Content>(json);
string receiverName = Operator.DisplayName;
content.ContentTemplate = JsonConvert.DeserializeObject<object>(content.ContentTemplate.ToString().Replace("${ReceiverNameFromTeams}", Operator.DisplayName));//set 收件人姓名(模板中未设置)
/*
*
*
*以下几行代码可以在官网找到解释,地址为:https://docs.microsoft.com/zh-cn/adaptive-cards/templating/sdk
**/
string templateJson = JsonConvert.SerializeObject(content.ContentTemplate).ToString();
string dataJson = JsonConvert.SerializeObject(content.ContentData).ToString();
//show messages
var renderer = new AdaptiveCardRenderer();
AdaptiveCardTemplate template = new AdaptiveCardTemplate(templateJson);
var context = new EvaluationContext
{
Root = dataJson
};
string cardJson = template.Expand(context);//将data应用到模板中
var card = AdaptiveCard.FromJson(cardJson).Card;
RenderedAdaptiveCard renderResult = renderer.RenderCard(card);
if (renderResult.FrameworkElement != null)
{
//在UI