Как связать два свойства в классе wpf - PullRequest
0 голосов
/ 13 ноября 2018

Я хотел бы связать два свойства в модели представления.

public class MainViewModel : INotifyPropertyChanged
{
   public string Format 
   {
     get { return format; }
     set
     {
        if (format != value)
        {
           format = value;
           OnPropertyChanged("Format");   
        }
     }
   }

   public string FilterString
   {
     get { return filter; }
     set { filter = SomeFunction(value); }
   }

   public event PropertyChangedEventHandler PropertyChanged;

   private void OnPropertyChanged(string propName)
   {
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
   }

}

Поэтому, когда свойство Format изменяется, он вызывает метод набора FilterString.

Что такоеправильный способ сделать это.

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете использовать WPF multibinding для привязки элемента управления к двум полям, но в этом случае я думаю, что имеет больше смысла, что ViewModel изменит FilterString при изменении формата.

Вы быиспользуйте multibinding, когда значение элемента управления зависит от двух вещей, потому что это функция графического интерфейса.В вашем случае свойства ViewModel логически связаны, поэтому более разумно, чтобы код был в ViewModel.

Чтобы помочь вам решить, какой шаблон использовать, спросите себя, хотите ли вы того же поведения, еслиВы повторно использовали ViewModel в другом месте.

...