我刚遇到一个我无法解决自己的问题。所以希望有人能给我一些想法。
我的问题:
所以我有一个复选框,它具有对类变量的绑定:
//WPF
<CheckBox IsChecked="{Binding IsChecked}" Name="cb" />
//class
public class Mod
{
bool _IsChecked;
public bool IsChecked { get { return _IsChecked; } set { MainWindow.w.checkChanged(this, value); _IsChecked = value; } }
}
现在,我的目标是当我单击任何复选框时它将执行一个方法。此方法将检查不同的事物,最终如果不符合检查条件,将显示一个MessageBox,其中包含OK和Cancel按钮。
当用户单击“取消”时,我想通过使用“对象”上的“绑定”来取消复选框的选中。
mod.IsChecked = value;
但是,由于UI在显示MessageBox之前尚未完成,因此它将在关闭MessageBox之后完成UI检查控制器(我认为在检查Binding之后)。
刚单击了Toggle复选框(3个中的第一个),但UI线程处于暂停状态,因为它等待MessageBox的InvokeEnd。
我希望我已经把问题弄清楚了。我不是线程专家,尤其是WPF / Form方面的专家。因此,希望有人能在正确的方向上帮助我。
非常感谢,Nkmol
如果我理解这项权利,我的最初想法是从复选框的Property(在ViewModel中)的设置器中调用该方法。从那里,您应该具有复选框的旧值和新值,并且可以完全控制要执行的操作(在这种情况下,弹出一个消息框)。有很多方法可以做到这一点(这是一种方法)。
边注; 对我而言,您“数据绑定”的方式似乎“不同”。为什么不在复选框的设置器中实现INotifyPropertyChanged和NotifyPropertyChanged?您现在的做法似乎违反了MVVM。希望这对您有所帮助,并祝您好运!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句