检查是否从另一个线程C#WPF检查了复选框

时间:2016-10-02 04:43:10

标签: c# wpf

如何检查是否从其他线程检查了我的UI中的复选框?因为我无法访问其他线程的UI元素......

谢谢:)。

3 个答案:

答案 0 :(得分:1)

将复选框数据绑定到视图模型中的属性,这可能是此逻辑所属的开头。

答案 1 :(得分:1)

一种可能的解决方案是使用MVVM模式,就像他的答案中提到的@PMV一样,但它不是唯一的。

在这种情况下,最常见的解决方案是使用与您尝试访问的元素相关联的Dispatcher对象。

如果您的目标是针对.NET 4.5或更高版本,则可以使用Invoke方法的this overload

var isChecked = targetCheckBox.Dispatcher.Invoke(() => targetCheckBox.IsChecked));

在旧版本的框架中,您必须回到this overload

var isChecked = (bool?)targetCheckBox.Dispatcher
    .Invoke(new Func<bool?>(() => targetCheckBox.IsChecked));

答案 2 :(得分:1)

像这样处理Checked的{​​{1}}事件:

CheckBox