и не работает, сеттер у IsDirty никогда не вызывается.
Как нужно правильно это делать? Как узнать что содержимое richtextbox изменилось (textChanged event не подходит)
Здравствуйте, Mr.Delphist, Вы писали:
MD>Реализует ли вьюмодель интерфейс INotifyPropertyChanged, явно или неявно?
viewmodel реализует этот интерфейс (унаследована от NotificationObject, работаем с Prism). Но это роли не играет, т.к. мы хотим только получить состояние, а не меняем его сами.
MD>Далее, кто устанавливает это свойство в True?
В том то и дело, что я его его не устанавливаю. Кнопка енейблится/дизейблится из самого RichTextBox. Т.е. визуально все работает, а вот байндинг (IsEnabled="{Binding IsDirty, Mode=OneWayToSource}") в мой viewmodel не срабатывает.
Здравствуйте, HotDog, Вы писали:
HD>В том то и дело, что я его его не устанавливаю. Кнопка енейблится/дизейблится из самого RichTextBox. Т.е. визуально все работает, а вот байндинг (IsEnabled="{Binding IsDirty, Mode=OneWayToSource}") в мой viewmodel не срабатывает.
Здравствуйте, _Raz_, Вы писали:
_R_>Здравствуйте, HotDog, Вы писали:
HD>>В том то и дело, что я его его не устанавливаю. Кнопка енейблится/дизейблится из самого RichTextBox. Т.е. визуально все работает, а вот байндинг (IsEnabled="{Binding IsDirty, Mode=OneWayToSource}") в мой viewmodel не срабатывает.
_R_>Биндитесь к команде
Здравствуйте, Sinatr, Вы писали:
S>Покопался немного, событие вызывается без проблем, странно почему не работает:
Да, это я уже тожел обнаружил, что в code behind все нормально прилетает. Пока сделал bahavior на это евент и прокидываю команду в viewmodel. Но не нравится мне это, костыль какой то.
S>У меня когда-то давно был похожий случай, смутно помню, пришел к выводу что биндинг к биндингу не работает.
Здравствуйте, _Raz_, Вы писали:
HD>>А как это делается ?
_R_>Во вью-модели: ApplicationCommands.Undo.CanExecuteChanged += UndoOnCanExecuteChanged или отсюда.
Из viewmodel не получится подписаться, так как мне нужно указать CommandTarget обьект, а я про него во viemodel ничего знаю.
За линк спасибо, гляну насколько оно хорошо работает.
Здравствуйте, HotDog, Вы писали:
HD>Из viewmodel не получится подписаться, так как мне нужно указать CommandTarget обьект, а я про него во viemodel ничего знаю.
Имелось ввиду следующее:
public class ViewModel
{
public ViewModel()
{
ApplicationCommands.Undo.CanExecuteChanged += UndoOnCanExecuteChanged;
}
private void UndoOnCanExecuteChanged(object sender, EventArgs eventArgs)
{
throw new NotImplementedException();
}
}
Здравствуйте, HotDog, Вы писали:
HD>В том то и дело, что я его его не устанавливаю. Кнопка енейблится/дизейблится из самого RichTextBox. Т.е. визуально все работает, а вот байндинг (IsEnabled="{Binding IsDirty, Mode=OneWayToSource}") в мой viewmodel не срабатывает.
А попробуйте биндиться не OneWayToSource, а двусторонне, и в любом случае явно задавая триггер: IsEnabled="{Binding IsDirty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"