gpt4 book ai didi

c# - WPF - 停止单选按钮单击消息框

转载 作者:行者123 更新时间:2023-12-02 04:12:08 26 4
gpt4 key购买 nike

我有一组动态生成的单选按钮,单击这些按钮时,会用数据填充大量文本框。它们绑定(bind)到 View 模型上的一个属性,该属性根据单选按钮的标签文本从服务中提取数据。

我想要做的是在单击单选按钮时显示一个消息框,因此如果用户意外(或有意)单击另一个单选按钮,我可以确认这就是他们想要做的。

我可以捕获单击事件并显示 MessageBox,但底层属性无论如何都会更改,从而触发数据更改。有没有一种方法可以在显示消息框时停止执行? Click 事件是否使用了错误的事件?我对 WPF 还很陌生。

单选按钮单击事件:

private void RadioButton_Click(object sender, RoutedEventArgs e)
{
var radioButton = sender as RadioButton;
MessageBoxResult result = MessageBox.Show("Choosing this sample will override any changes you've made. Continue?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
radioButton.IsChecked = true;
return;
}
}

在方法的第二行之后和返回用户的选择之前,属性无论如何都会更新。

最佳答案

Click 事件在 RadioButton 已被选中后引发,但您可以使用 PreviewMouseLeftButtonDown 事件代替并设置 Handled为真

<RadioButton ... PreviewMouseLeftButtonDown="RadioButton_PreviewMouseLeftButtonDown"/>

并在代码中

private void RadioButton_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
var radioButton = sender as RadioButton;
MessageBoxResult result = MessageBox.Show("Choosing this sample will override any changes you've made. Continue?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
radioButton.IsChecked = true;
}
}

关于c# - WPF - 停止单选按钮单击消息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36163516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com