我想为消息对话框创建一个用户控件,以便根据需要更改消息对话框的 UI。例如,如果我传递标题、消息和类型,那么根据消息的类型,它应该显示该消息对话框。类型可以是:错误、警告、简单消息等。我该如何实现呢?当类型设置为错误示例时,自定义消息对话框的 UI 应如下所示:
4 回答
这比你想象的要难得多。挑战在于确保对话框保持异步并将其放入可视化树中。Gope 已经提到了 Callisto 框架中的CustomDialog,但我发现这是非常有限的。相反,我关注了这篇非常棒的文章,它向您展示了如何制作一个可用于显示任何用户控件的通用对话框:
为您的 Win8 应用程序创建自定义异步对话框 http://www.visuallylocated.com/post/2012/11/12/Creating-a-custom-async-dialog-for-your-Win8-apps-Part-2-CustomDialog .aspx
开发支持、设计支持和更多的好处:http: //bit.ly/winappsupport
这里还有一个使用Awaitable UI方法的示例实现(使用 async/await 关键字等待 UI 事件)。
First you should look into Callisto and its CustomDialog (http://bit.ly/ILTyRn). Unfortunately it is a still a sealed class so you can either use its code or define an AttachedProperty for the dialog type. All you need besides that are 3 different Templates and a TemplateSelector that is checking for the DialogTypeProperty (You need to create such a Property - AttachedProp f.e.)
Hope that points you in the right direction. :)
哦,上帝,你问了很多!
:)
好的,这样做,我会指导你,你做你的一部分:
创建一个类 SysDialog : HtmlGenericControl
public SysDialog() {
TagName = 'div';
}
public string Title {get;set;}
public string Message {get;set;}
public string MessageType {get;set;}
public SysDialog Render(){
HtmlGenericControl title = new HtmlGenericControl ();
title.TagName = "div";
HtmlGenericControl msg = new HtmlGenericControl ();
msg.TagName = "div";
title.InnerHTML = Title;
msg.InnerHTML = Message;
Controls.Add(title);
Controls.Add(msg);
title.Attritbues.Add("class", "title-" + MessageType);
msg.Attritbues.Add("class", "msg-" + MessageType);
Attritbues.Add("class", "sysdlg-" + MessageType);
return this;
}
它只是起点,您修改此代码并增强您的消息类型并根据您的消息类型设置尽可能多的 div/按钮或任何内容。