Mvvm 如何避免绑定文本框详细信息时属性过多

Mvvm 如何避免绑定文本框详细信息时属性过多,mvvm,caliburn.micro,Mvvm,Caliburn.micro,我有一个带有22个文本框的mvvm应用程序。 在我的“普通”wpf应用程序中,我可以列出一个列表,然后更改所有框的设置,如下所示: Brush MyBrush = Brushes.LightGray; foreach (var a in AllBoxes) { a.Background = MyBrush; a.IsReadOnly = true; a.

我有一个带有22个文本框的mvvm应用程序。 在我的“普通”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个属性?

您可以为一个文本框创建一个UserControl,其中包含所有绑定…与ViewModel关联

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

然后,使用ViewModel的ObservableCollection并使用ItemControl创建ParentView:

并为ItemsControl中的项创建itemstemplate

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

您可以为一个文本框创建一个UserControl,该文本框具有所有绑定…与ViewModel关联

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

然后,使用ViewModel的ObservableCollection并使用ItemControl创建ParentView:

并为ItemsControl中的项创建itemstemplate

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