我有MessageDialog
对话负责删除确认。
private async void ShowDialogClick(object sender, RoutedEventArgs e)
{
MessageDialog md = new MessageDialog("Are your sure you want to delete this?");
md.Commands.Add(new UICommand("Delete",
new UICommandInvokedHandler(DeleteItemHandler)));
md.Commands.Add(new UICommand("Cancel"));
await md.ShowAsync();
}
当用户点击Delete
时,DeleteItemHandler
会调用数据库上的操作,但如何通知用户操作失败?
我尝试创建新的MessageDialog,但我得到win32 exception
。
private async void DeleteItemHandler(IUICommand command)
{
MessageDialog md = new MessageDialog("New content");
String result = DbDeletation();
if(result != "OK")
await md.ShowAsync();
}
告知用户有关错误的最佳方法是什么?
答案 0 :(得分:1)
您无法自定义MessageDialos并将它们连续调用,因此,您有两种方法:
使用命令构建自己的Popup控件,并且在操作返回结果之前不要关闭弹出窗口。显示进度或类似的东西。如果发生错误 - 在弹出窗口中显示。
使用MessageDialog并在您调用MessageDialog的地方(例如,在按钮Delete
附近)显示progess和错误消息(如果有)。
第二种方法更适合Windows Store App guidelines。
答案 1 :(得分:0)
根据Windows Store App guidelines MessagegDialog
并不是确认删除的好方法。
当应用需要确认用户对用户采取的操作的意图时,弹出窗口是适当的表面。参见弹出窗口指南。
现在我的代码更清晰......
private async void DeleteItem_Click(object sender, RoutedEventArgs e)
{
MessageDialog md = new MessageDialog("Error");
String result = DbDeletation();
if (result != "OK")
await md.ShowAsync();
}
更温和的解决方案:)
<Button HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="Show Dialog">
<Button.Flyout>
<Flyout>
<StackPanel>
<TextBlock>Are your sure you want to delte this?</TextBlock>
<Button Click="DeleteItem_Click"
Content="Delete"
HorizontalAlignment="Right"/>
</StackPanel>
</Flyout>
</Button.Flyout>
</Button>