ItemsControl 组合框 selecteditem C# WPF MVVM

Posted

技术标签:

【中文标题】ItemsControl 组合框 selecteditem C# WPF MVVM【英文标题】:ItemsControl combobox selecteditem C# WPF MVVM 【发布时间】:2021-09-16 05:33:46 【问题描述】:

我有一个应用程序,当按下按钮时,会添加一个新对象“类别”,并且 UI 更新会插入一个 ComboBox 和一个 TextBlock:

如果我按下按钮: 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】:

您需要在 ItemTemplate 的 XAML 中将 IsSynchronizedWithCurrentItem 设置为 false

【讨论】:

以上是关于ItemsControl 组合框 selecteditem C# WPF MVVM的主要内容,如果未能解决你的问题,请参考以下文章

获取组合框 SelectedIndex 数据并在 SELECT Query 中使用 - VB.net

加入组合框的 ID

组合框中的文本重叠图标

检查是否选择了组合框

尝试为 select2 组合框创建自定义数据适配器时,是啥导致“Uncaught TypeError baseName split is not a function”?

链接组合框(最好是 JQuery)