0

我有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();
}

通知用户错误的最佳方式是什么?

4

2 回答 2

1

你不能自定义 MessageDialos 并连续调用它们,所以,你有两种方法:

  1. 使用命令构建自己的 Popup 控件,在操作返回结果之前不要关闭 popup。显示进度或类似的东西。如果发生错误 - 在弹出窗口中正确显示。

  2. 使用 MessageDialog 并在您调用 MessageDialog 的位置(Delete例如,在按钮附近)显示进度和错误消息(如果有)。

第二种方法更符合Windows Store App 指南

于 2014-02-16T00:52:29.503 回答
0

根据Windows Store App 指南 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>
于 2014-02-16T01:43:43.170 回答