win10 UWP MessageDialog 和 ContentDialog

Cle****-he UID.1073626
2016-03-08 发表

我之前开发一个软件 winMarkdown,这个软件在关闭需要提示用户还没有保存东西,需要保存,如果用户选择退出,那么把数据存放。

在Metro程序中,没有传统的窗口,当我们要用需要交互的消息提示时,在Win8时代,引入了一个MessageDialog来取代常用的MessageBox。

我在MainPage,挂起App.Current.Suspending += suspend;

[mw_shl_code=csharp,true]private async void suspend(object sender, Windows.ApplicationModel.SuspendingEventArgs e)
{
SuspendingDeferral deferral = e.SuspendingOperation.GetDeferral();
MessageDialog message_dialog = new MessageDialog("当前还在运行,确定退出", "退出");
message_dialog.Commands.Add(new UICommand("确定", cmd => { }, "退出"));
message_dialog.Commands.Add(new UICommand("取消", cmd => { }));
message_dialog.DefaultCommandIndex = 0;
message_dialog.CancelCommandIndex = 1;
IUICommand result = await message_dialog.ShowAsync();
if (result.Id as string == "退出")
{

}
deferral.Complete();
}[/mw_shl_code]


SuspendingDeferral deferral = e.SuspendingOperation.GetDeferral();挂起还要做,直到deferral.Complete();
[mw_shl_code=csharp,true] MessageDialog message_dialog = new MessageDialog("当前还在运行,确定退出", "退出");
message_dialog.Commands.Add(new UICommand("确定", cmd => { }, "退出"));
message_dialog.Commands.Add(new UICommand("取消", cmd => { }));[/mw_shl_code]


两个按钮,一个确定,一个取消,可以UICommand ID作为点击后,是哪个按钮点击
[mw_shl_code=csharp,true]MessageDialog.DefaultCommandIndex按ESC选择按钮
MessageDialog.CancelCommandIndex按enter按钮[/mw_shl_code]


[mw_shl_code=csharp,true] IUICommand result = await message_dialog.ShowAsync();
if (result.Id as string == "退出")
{

}[/mw_shl_code]

程序要调试挂起,需要生命周期,点击挂起
***附件停止解析***


我们按enter就会点击确定

而我们对于MessageDialog功能还是觉得不够,ContentDialog可以定义复杂的Xaml自定义

我们把MessageDialog换ContentDialog
[mw_shl_code=csharp,true]ContentDialog content_dialog = new ContentDialog()
{
Title = "退出",
Content = "当前还在运行,确定退出",
PrimaryButtonText = "确定",
SecondaryButtonText = "取消",
FullSizeDesired = true,
};

content_dialog.PrimaryButtonClick += (_s, _e) => { };

await content_dialog.ShowAsync();[/mw_shl_code]

***附件停止解析***

[mw_shl_code=csharp,true]<UserControl
x:Class="produproperty.content"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:produproperty"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">

<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="当前还在运行,确定退出"></TextBlock>
<CheckBox Grid.Row="1" Content="保存"></CheckBox>
</Grid>
</UserControl>[/mw_shl_code]


[mw_shl_code=csharp,true] ContentDialog content_dialog = new ContentDialog()
{
Title = "退出",
Content = new content(),
PrimaryButtonText = "确定",
SecondaryButtonText = "取消",
FullSizeDesired = false,
};

content_dialog.PrimaryButtonClick += (_s, _e) => { };

await content_dialog.ShowAsync();[/mw_shl_code]

***附件停止解析***

参见:***链接停止解析***

本文出自:LinDeXi博客 开发者交流群:53078485,期待您的加入!

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
15****20 UID.893444
2016-03-08 使用 Lumia 950 XL 回复

不明觉厉,支持开发者。

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报