DialogResult WPF

Aks*_*y J 6 wpf

我正在读一本书

在用户单击按钮后,您可以手动设置DialogResult,而不是将按钮指定为接受按钮(通过将IsDefault设置为true).单击该按钮会自动将窗口的DialogResult设置为true.同样,您可以将按钮指定为取消按钮(通过将IsCancel设置为true),在这种情况下单击它会将DialogResult设置为Cancel.

这是MainWindow:

<Window x:Class="WpfApplicationWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Width="400" Height="400">
    <StackPanel>

        <Button Name="BtnShowDialogStatus" Click="BtnShowDialogStatus_Click">DIALOG RESULT</Button>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

点击事件代码:

private void BtnShowDialogStatus_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show(new NewWindow().ShowDialog().ToString());
}
Run Code Online (Sandbox Code Playgroud)

这是我在点击事件中打开的对话框:

<Window x:Class="WpfApplicationWPF.NewWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="NewWindow" Height="300" Width="300">
    <StackPanel>
        <Button Name="BtnDEfault" IsDefault="True" Click="BtnDEfault_Click">DEFAULT BUTTON</Button>
        <Button Name="BtnCancel" IsCancel="True" Click="BtnCancel_Click">CANCEL BUTTON</Button>
    </StackPanel>
</Window>   
Run Code Online (Sandbox Code Playgroud)

这是它的代码:

private void BtnDEfault_Click(object sender, RoutedEventArgs e)
{
    this.Close();
}

private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
    this.Close();
}
Run Code Online (Sandbox Code Playgroud)

我可以看到它只返回DialogResult为假,无论我点击默认或取消按钮.

bij*_*iju 7

IsDefault将按钮绑定到Enter键,以便按Enter键将触发Click事件.这并不意味着Yes按钮将为DialogResult返回true.

请参阅链接.它将为您清理一些事情

http://blog.wpfwonderland.com/2010/03/22/getting-a-dialogresult-from-a-wpf-window/

http://www.wpftutorial.net/Dialogs.html

希望能帮助到你...

  • 第一个链接已损坏:( (2认同)

Bin*_*nil 6

将您的代码更改为

private void BtnDEfault_Click(object sender, RoutedEventArgs e)
{
    DialogResult = true;
    this.Close();
}

private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
    DialogResult = false;
    this.Close();
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • 你不需要调用`this.Close()`.将`Window.DialogResult`属性设置为true或false会自动关闭对话框/窗口.(至少在.Net 4.5中 - 我是新手) (7认同)