【发布时间】:2013-02-27 07:22:51
【问题描述】:
我想为消息对话框创建一个用户控件,以便根据需要更改消息对话框的 UI。例如,如果我传递标题、消息和类型,那么根据消息的类型,它应该显示该消息对话框。 类型可以是:错误、警告、简单消息等。我该如何实现呢? 当类型设置为错误示例时,自定义消息对话框的 UI 应如下所示:
【问题讨论】:
标签: c# xaml windows-8 user-controls winrt-xaml
我想为消息对话框创建一个用户控件,以便根据需要更改消息对话框的 UI。例如,如果我传递标题、消息和类型,那么根据消息的类型,它应该显示该消息对话框。 类型可以是:错误、警告、简单消息等。我该如何实现呢? 当类型设置为错误示例时,自定义消息对话框的 UI 应如下所示:
【问题讨论】:
标签: c# xaml windows-8 user-controls winrt-xaml
这比你想象的要难得多。挑战在于确保对话框保持异步并将其放入可视化树中。 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
【讨论】:
还有一个示例实现 here 使用 Awaitable UI 方法(使用 async/await 关键字等待 UI 事件)。
【讨论】:
天哪,你问的太多了!
:)
好吧,就这样吧,我会指导你,你尽自己的一份力:
创建一个类 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/按钮或其他内容。
【讨论】:
首先,您应该查看 Callisto 及其 CustomDialog (http://bit.ly/ILTyRn)。不幸的是,它仍然是一个密封类,因此您可以使用它的代码或为对话框类型定义一个 AttachedProperty。除此之外,您只需要 3 个不同的模板和一个正在检查 DialogTypeProperty 的 TemplateSelector(您需要创建这样的属性 - AttachedProp f.e.)
希望这能为您指明正确的方向。 :)
【讨论】: