Я динамически создаю список комбинированных списков для разных моделей, используя элемент wpf ItemsControl, используя шаблон MVVM.Я хочу иметь логику, например, если я выберу элемент в одном из комбинированных списков, то во всех остальных он не появится.У меня возникают трудности с этим, когда я использую ItemsControl (ItemsSource - список моих моделей) и создаю для него элементы в VievModel - привязка не работает, она работает только тогда, когда у меня есть список элементов comboBox для каждой из моделей (класс Model), а недля всех комбинированных списков (в классе ViewModel).Могу ли я иметь, например, 1 ObservableCollection для элементов комбинированного списка в ViewModel и использовать также ItemsControl для создания комбинированного списка?
My View:
<ItemsControl ItemsSource="{Binding Items}" Grid.Row="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Content="{Binding Name}" Grid.Column="0" />
<ComboBox ItemsSource="{Binding ComboBoxItems}" Grid.Column="1"
SelectedItem="{Binding SelectedItem}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
ViewModel:
public ObservableCollection<Model> Items { get; set; }
// if I add here public ObservableCollection<string> ComboBoxItems { get; set; }
// binding isn't working, so I add it to Model class, but in it it does not work as I need.
public ViewModel()
{
Items = new ObservableCollection<Model>();
Items.Add(new Model {Name = "11111"});
Items.Add(new Model {Name = "22222"});
}
Модель:
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
public string SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
OnPropertyChanged("SelectedItem");
}
}
public ObservableCollection<string> ComboBoxItems {get;set;}
public Model()
{
ComboBoxItems = new ObservableCollection<string>();
ComboBoxItems.Add("q");
ComboBoxItems.Add("w");
ComboBoxItems.Add("e");
ComboBoxItems.Add("r");
ComboBoxItems.Add("t");
ComboBoxItems.Add("y");
}