Как избежать слишком большого количества свойств при привязке деталей текстового поля - PullRequest
1 голос
/ 27 мая 2020

У меня есть приложение mvvm с 22 текстовыми полями. В моем «обычном» приложении wpf я мог бы составить список, а затем изменить настройки для всех полей, например:

Brush MyBrush = Brushes.LightGray;
            foreach (var a in AllBoxes)
            {
                a.Background = MyBrush;
                a.IsReadOnly = true;
                a.IsTabStop = false;
            }

Итак, в mvvm мне нужно сделать 3 привязки для каждого текстового поля и создать такие свойства, как:

private Brush _clr2;
        public Brush Clr2
        {
            get { return _clr2; }
            set
            {
                _clr2 = value;
                NotifyOfPropertyChange(() => Clr2);
            }
        }

Есть ли более простой способ сделать это и не создавать 66 свойств?

1 Ответ

0 голосов
/ 27 мая 2020

Вы создаете UserControl для одного TextBox со всеми привязками ... со связанным ViewModel

<StackPanel>
   <TextBox .... /> 
</StackPanel>

Затем вы используете ObservableCollection своей ViewModel и создаете ParentView с ItemControl:

<ItemsControl ItemsSource="{Binding ListOfTextBox}">

И создайте шаблон элементов для элементов в вашем ItemsControl

<DataTemplate>
    <ContentControl cal:View.Model="{Binding}" />
</DataTemplate>
...