2013-10-27 90 views
0

我有一個ProductGrid,序列號列的數據網格,其中SerialNo是一個DatagridComboboxColumn.I想填充序列沒有組合框當產品被動態地選擇爲產品ID時。 我的XAML是:wpf datagrid:動態更改組合框集合

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

現在我的問題是我想要填充序列號組合框欄裏時產品是動態選擇的(每個產品的序列號不同)。如何在產品選定時綁定串行否組合框?

回答

1

收聽DataGrid的SelectedItem屬性或更好地說將該屬性綁定到ViewModel中的屬性。當你在你的DataGrid中選擇一行時,ViewModel中屬性的setter將被調用,你可以在那裏檢查新值並根據它來設置SerialNos屬性。一旦設置了SerialNos,PropertyChanged事件將被觸發,這將告訴DataGrid組合框的ItemsSource已被刷新。 DataGrid還會用新的值填充組合框。

其純粹的View-ViewModel-Model模式。這些問題只能通過使用MVVM來解決,而不是捕獲一些視圖中的事件並在代碼後面處理它們。