在WPF中,我想在用户第一次点击CheckBox
时打开一个对话框 - 某种警告,如果他真的想要启用此选项。该事件将在代码隐藏中处理。
这样的事情是可能的:
<CheckBox IsChecked="{Binding Path=Something.Enabled}"
PreviewMouseDown="CheckBox_PreviewMouseDown"/>
<!-- or: -->
<CheckBox IsChecked="{Binding Path=Something.Enabled}"
Click="CheckBox_Click"/>
我还想将CheckBox
已检查和未检查的事件绑定到IsChecked
属性,如上例所示。
答案 0 :(得分:0)
由于任何类型的确认对话框都会停止点击Something.Enabled
,因此您必须自己设置CheckBox.IsChecked
。在代码中设置Something.Enabled
只会破坏你的绑定。
您可以将确认放在ViewModel中(在private bool _confirmed;
private void CheckBox_PreviewMouseDown(object sender,
System.Windows.Input.MouseButtonEventArgs e)
{
if(!_confirmed)
if (MessageBox.Show("Are you sure?", "Confirm", MessageBoxButton.YesNo)
== MessageBoxResult.Yes)
{
_confirmed = true;
Checked = true;
}
}
的设置器中)或者像这样:
{{1}}
答案 1 :(得分:0)
您可以简单地添加保存值的新布尔标志,无论DialogBox是否已经显示。