Список элементов управления выбран для C# WPF MVVM

#c# #wpf #visual-studio #xaml #mvvm

Вопрос:

у меня есть приложение , в котором при нажатии кнопки добавляется новый объект «Категория», а обновление пользовательского интерфейса вставляет поле со списком и текстовый блок : введите описание изображения здесь

если я нажму кнопку : введите описание изображения здесьm/DYQCN.png

если я нажму на нее еще раз : введите описание изображения здесь

Но когда я выбираю элемент, каждый из выпадающих списков меняется :

введите описание изображения здесь

Как этого избежать ?

Это мой код :

XAML

  <ItemsControl x:Name="icc" ItemsSource="{Binding Path=Categorie,UpdateSourceTrigger=PropertyChanged}" >

                <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                            <ComboBox SelectedValue="{Binding c_nome_categoria , Mode=TwoWay}" Background="White" BorderBrush="Brown" BorderThickness="1" HorizontalAlignment="Left" Width="150" Grid.Column="1" ItemsSource="{Binding ElementName=icc, Path=DataContext.listaCategorie}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="nomeCategoria" ></ComboBox>
                            <TextBox Text="{Binding contenutoCategoria}" materialDesign:HintAssist.Hint="Inserisci gli oggetti" AcceptsReturn="True"></TextBox>
                    </StackPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>

            </ItemsControl>
 

Модель представления :

   private BindingList<Categoria> _listaCategorie = new BindingList<Categoria>();
        public BindingList<Categoria> listaCategorie
        {
            get { return _listaCategorie; }
            set
            {
                _listaCategorie = value;
                OnPropertyChanged("listaCategorie");
            }
        }

        private BindingList<CategorieValigia> _Categorie = new BindingList<CategorieValigia>(); 
        public BindingList<CategorieValigia> Categorie
        {
            get { return _Categorie; }
            set
            {
                _Categorie = value;
                OnPropertyChanged("Categorie");
            }
        }

        public void InserisciCategoria()
        {
            listaCategorie = getCategorie();
            CategorieValigia cv = new CategorieValigia();
          
            Categorie.Add(cv);


        }
 

Ответ №1:

Вам нужно установить IsSynchronizedWithCurrentItem значение false в XAML вашей таблички элементов.