Выполните метод в сеттере свойства
У меня есть собственность.
private MyModel _selectedModel; public MyModel SelectedModel { get {return _selectedModel;} set {ValidateProperty(ref _selectedModel, value);} }
ValidatePropertyэто как-то базовый класс, который наследует
inotifypropertychanged. Он имеет
public event PropertyChangedEventHandler PropertyChanged;Но я не могу изменить его, потому что все им пользуются.
Мой вопрос заключается в том, что когда свойство изменилось, мне нужно позвонить в службу. Итак, мой код таков
private MyModel _selectedModel; public MyModel SelectedModel { get {return _selectedModel;} set { ValidateProperty(ref _selectedModel, value); if(value != null) CallService(value); } }
Не уверен, что это хорошая практика?
Что я уже пробовал:
Спасибо за поддержку кода. Может быть, использовать событие вместо службы вызовов в сеттере?
Richard Maly
Я собираюсь пойти на риск и сказать, что это звучит нормально для меня. Именно поэтому свойства отличаются от переменных. Однако в зависимости от того, что происходит дальше по коду, могут возникнуть побочные эффекты. Я предполагаю, что это либо SL, либо XAML, поэтому вы можете рассмотреть возможность появления в потоке, чтобы все, что делает служба, не блокировало ваш пользовательский интерфейс
Christiaan van Bergen
Имейте в виду, что метод ValidateProperty может внести некоторые изменения в значения до того, как они будут переданы в _selectedModel. Вы выполняете свой код на "значении", вы уверены, что хотите это сделать? Разве вы не хотите выполнить свой код на '_selectedModel' ?
И на самом деле ваш код будет выполняться каждый раз, когда значение SelectedModel будет установлено, а не равно нулю. Это несколько отличается от вызова вашего кода всякий раз, когда свойство изменяется.
И да, возможно, Вам будет лучше создать новый обработчик, реагирующий на событие PropertyChanged.
Member 12658724
Это приложение wpf. Когда я щелкаю строку в сетке, свойство изменяется и вызывает службу.
Member 12658724
Я могу использовать event, но не знаю, как это сделать для этого случая.