У меня только что наткнулся на проблему, которую я не смог решить сам. Поэтому, надеюсь, кто-нибудь может дать мне некоторые идеи.WPF MessageBox Cancel checkbox check
Моя проблема:
Так у меня есть флажок, который имеет привязку к переменной класса:
//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 и Отмена.
Когда пользователь нажимает Отмена, я хочу отменить проверку флажка, используя мое привязку к объекту.
mod.IsChecked = value;
Однако, поскольку интерфейс не закончен до того, как MessageBox показывает вверх, он закончит пользовательский интерфейс проверьте контроллер после MessageBox были закрыты (я предполагаю, что после того, как он проверяет Binding).
тумблер флажок только щелкнули (первый из 3), но поток пользовательского интерфейса на паузу, потому что он ждет на InvokeEnd в MessageBox.
Надеюсь, я сделал свою проблему достаточно ясной. Я не специалист в потоковом режиме, особенно не с WPF/Form. Поэтому, надеюсь, кто-то может помочь мне в правильном направлении.
Очень ценивший, Nkmol
Это помогло мне заняться довольно долгое время, когда я узнал всю концепцию MVVM, поэтому спасибо, что указали это. Как я исправил это сейчас: я добавил 'INotifyPropertyChanged' в логическое значение, и я добавил событие PropertyChanged в ListViewItem. Из-за этого я могу просто установить 'mod.IsChecked' в false и добавить флаг' _skipNextChange', чтобы он снова не активировал PropertyChanged. – nkmol
Прохладный! Рад помочь! – Paul