单击复选框时,如何使复选框不更改checkState?
我想将响应单击事件与checkBox中的变量绑定分开,checkBox的checkstate仅与我绑定的变量有关,并且仍然响应click事件(调用click方法,然后单击checkbox)。
示例:如果选中了复选框,则当我再次单击复选框时,仍将选中该复选框。它不会更改checkState,但会响应click事件。我想这样做是因为我为checkBox设置了代码绑定。checkBox'checkState仅与绑定的SomeBoolValue有关。xmal代码:
<CheckBox Name="testCheckBox" Margin="15" Content="Test" Click="testCheckBox_Clicked"/>
隐藏在构造函数内部的代码:
this.testCheckBox.SetBinding(CheckBox.IsCheckedProperty, new Binding("BoolTag") { Source = SomeBoolVariable, Mode = BindingMode.OneWay });
添加我想在点击事件方法中做点事情
private void testCheckBox_Clicked(object sender, RoutedEventArgs e)
{
// do something
}
您可以处理uielement Previewmouseleftbuttondown。
<CheckBox UIElement.PreviewMouseLeftButtonDown="CheckBox_PreviewMouseLeftButtonDown"
IsTabStop="False"
IsChecked="{Binding SomeBool}"/>
在处理程序中,执行您的click事件所需做的所有事情,并将事件标记为已处理。
private void CheckBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// Do whatever you need here
e.Handled = true;
}
可能还有其他方法来更改值,因此您可以考虑使用某种方法来停止ui更新视图模型中的该属性。
例如
private bool someBool = true;
public bool SomeBool
{
get { return someBool; }
set { }
}
使用上述方法,您可以将someBool设置为任何新值,然后提高SomeBool上已更改的属性,以便ui读取更改后的值。