Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# wpf datagrid:动态更改组合框集合_C#_Wpf_Datagrid_Combobox - Fatal编程技术网

C# wpf datagrid:动态更改组合框集合

C# wpf datagrid:动态更改组合框集合,c#,wpf,datagrid,combobox,C#,Wpf,Datagrid,Combobox,我有一个分别包含Product和Serial No列的datagrid,其中SerialNo是DatagridComboboxColumn。我想在根据产品Id动态选择产品时填充Serial No ComboxBox。 我的Xaml是: <my:DataGrid Name="dgSales" ItemsSource="{Binding}" SelectionUnit="Cell" AutoGenerateColumns="False" > <my:DataGri

我有一个分别包含Product和Serial No列的datagrid,其中SerialNo是DatagridComboboxColumn。我想在根据产品Id动态选择产品时填充Serial No ComboxBox。 我的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>

现在我的问题是,当动态选择产品时,我想填充序列号组合框列(每个产品的序列号不同)。当选择产品时,如何绑定序列号组合框?

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

它的纯视图视图模型模式。这些问题应该通过使用MVVM来解决,而不是捕获视图中的某些事件并在代码隐藏中处理它们

 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");
        }
    }
}
 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;
        }
    }
}