为Message Dialog创建用户控件

时间:2013-02-26 11:49:50

标签: c# xaml windows-8 user-controls winrt-xaml

我想为消息对话框创建一个用户控件,以便根据需要更改消息对话框的UI。例如,如果我传递标题,消息和类型,那么根据消息的类型,它应该显示该消息对话框。 类型可以是:错误,警告,简单消息等。我该如何实现? 当类型设置为错误示例时,自定义消息对话框的UI应如下所示: enter image description here

4 个答案:

答案 0 :(得分:2)

这比你想象的要难得多。挑战在于确保对话框保持异步并将其置于可视化树中。 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

答案 1 :(得分:0)

天哪,你问了很多!

:)

好的,这样做,我会引导你,你做你的一部分:

创建一个类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 /按钮等。

答案 2 :(得分:0)

首先你应该研究一下Callisto及其CustomDialog(http://bit.ly/ILTyRn)。不幸的是,它仍然是一个密封的类,因此您可以使用其代码或为对话框类型定义AttachedProperty。除此之外你需要的只有3个不同的模板和一个正在检查DialogTypeProperty的TemplateSelector(你需要创建一个这样的属性 - AttachedProp f.e。)

希望指出你正确的方向。 :)

答案 3 :(得分:0)

还有一个使用here方法的示例实现Awaitable UI(使用async / await关键字等待UI事件)。