DataGridComboBox列和代码绑定

时间:2014-02-07 12:19:20

标签: c# wpf xaml datagrid

我有一个使用DataGrid控件的应用程序,其中XAML中定义了DataGridComboBoxColumn。现在我有一个要求,我想在后面的代码中创建DataGridComboBoxColumn及其绑定。

我的XAML是:

<my:DataGrid.Columns>
   <my:DataGridComboBoxColumn 
      Width="100" 
      Header="Product Code" 
      SelectedValueBinding="{Binding Path=Product_Id,UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}"
      SelectedValuePath="Product_Id" 
      DisplayMemberPath="Product_Code">
      <my:DataGridComboBoxColumn.ElementStyle>
         <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" Value="{Binding Path=ProductList}"/>
         </Style>
      </my:DataGridComboBoxColumn.ElementStyle>
      <my:DataGridComboBoxColumn.EditingElementStyle>
         <Style TargetType="ComboBox">
            <Setter Property="IsEditable" Value="True" />
            <Setter Property="ItemsSource"  Value="{Binding Path=ProductList}"/>
            <Style.Triggers>
               <Trigger Property="Validation.HasError" Value="true">
                  <Setter Property="Background" Value="Pink"/>
                  <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
               </Trigger>
            </Style.Triggers>
         </Style>
      </my:DataGridComboBoxColumn.EditingElementStyle>
   </my:DataGridComboBoxColumn>
</my:DataGrid.Columns>

现在我想进行上面的DataGridComboBox列及其在代码中的绑定如何实现此目的?

1 个答案:

答案 0 :(得分:0)

其中datagrid是您的DataGrid实例。

        datagrid.Columns.Add(new DataGridComboBoxColumn()
        {
            Width = 100,
            Header = "Product Code",
            SelectedValuePath="Product_Id",
            DisplayMemberPath="Product_Code",
            SelectedValueBinding = new System.Windows.Data.Binding()
            {
                Path = new PropertyPath("Product_Id"), 
                UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, 
                ValidatesOnDataErrors = true
            }
        });

关注其他事情......