【问题标题】:wpf datagrid: dynamically change combobox collectionwpf datagrid:动态更改组合框集合
【发布时间】:2013-10-27 15:24:34
【问题描述】:

我有一个带有产品的数据网格,序列号分别列,其中序列号是一个 DatagridComboboxColumn。我想填充序列号组合框当产品被选择为基于产品 ID 动态选择时。 我的 Xaml 是:

 <my:DataGrid Name="dgSales" ItemsSource="{Binding}" SelectionUnit="Cell"   AutoGenerateColumns="False" >
      <my:DataGrid.Columns>
<my:DataGridTextColumn  Header="Product" Visibility="Hidden" Binding="{Binding ProductName}"></my:DataGridTextColumn>
<my:DataGridComboBoxColumn Header="Serial No" Width="135"
                                                SelectedValueBinding="{Binding SerialNo}"
                                                SelectedValuePath="SlRecord_Id"
                                                DisplayMemberPath="SlNum"

                                               >
  <my:DataGridComboBoxColumn.ElementStyle>
     <Style TargetType="{x:Type ComboBox}">
        <Setter Property="ItemsSource" Value="{Binding}" />
                            </Style>
  </my:DataGridComboBoxColumn.ElementStyle>
  <my:DataGridComboBoxColumn.EditingElementStyle>
    <Style TargetType="{x:Type ComboBox}">
        <Setter Property="ItemsSource" Value="{Binding}" />

                            </Style>
                        </my:DataGridComboBoxColumn.EditingElementStyle>
                    </my:DataGridComboBoxColumn>
  </my:DataGrid.Columns>
</my:DataGrid>

我的数据对象是:

 class clsSalesItems : INotifyPropertyChanged, IDataErrorInfo
{
     private string _ProductName;
     private string _SerialNo;
      private ObservableCollection<ModelNos> _SerialNos;


   public string ProductName
    {
        get { return _ProductName; }
        set
        {
            _ProductName = value;
            OnPropertyChanged("ProductName");
        }
    }

    public ObservableCollection<ModelNos> SerialNos
    {
        get
        {
            return _SerialNos; 
        }
        set 
        { 
            _SerialNos = value;
            OnPropertyChanged("SerialNos");
        }
    }
}

我的 SerialNo 课程是:

 public class ModelNos
{
    private int _SlRecord_Id;
    private string _SlNo;

    public int SlRecord_Id
    {
        get { return _SlRecord_Id; }
        set
        {
            _SlRecord_Id = value;
        }
    }
    public string SlNum
    {
        get { return _SlNo; }
        set
        {
            _SlNo = value;
        }
    }
}

Now my problem is I want to populate the Serial no combobox column when the product is selected dynamically(serial no is different for each product).How do I Bind the Serial no combobox when the Product selected ?

【问题讨论】:

    标签: c# wpf datagrid combobox


    【解决方案1】:

    收听 DataGrid 的 SelectedItem 属性,或者更好地说将该属性绑定到 ViewModel 中的属性。当您在 DataGrid 中选择一行时,将调用 ViewModel 中的属性设置器,您可以在那里检查新值,并根据它设置 SerialNos 属性。设置 SerialNos 后,将触发 PropertyChanged 事件,该事件将告诉 DataGrid ComboBox 的 ItemsSource 已刷新。 DataGrid 将进一步用新值填充组合框。

    它的纯 View-ViewModel-Model 模式。此类问题只需要使用 MVVM 即可解决,而不是在视图中捕获某些事件并在后面的代码中处理它们。

    【讨论】:

      猜你喜欢
      • 2012-11-30
      • 2018-06-24
      • 2013-11-03
      • 2015-01-11
      • 2013-09-30
      • 1970-01-01
      • 2021-11-04
      • 2011-03-02
      • 2018-01-17
      相关资源
      最近更新 更多