如何在xceed datagrid中绑定combobox的Itemssource
How to bind Itemssource of combobox in xceed datagrid
我正在尝试将组合框添加到 Xceed WPF 数据网格,但无法将 Itemssource 绑定到组合框。这是数据网格的 xaml。
<xwpf:DataGridControl ItemsSource="{Binding SaleDetails}" AutoCreateColumns="False" >
<xwpf:DataGridControl.Columns>
<xwpf:Column FieldName="Status" Title="Status" CellContentTemplate="{StaticResource colReinstatementType}" CellEditor="{StaticResource statusEditor}" />
</xwpf:DataGridControl.Columns>
</xwpf:DataGridControl>
资源
<UserControl.Resources>
<DataTemplate x:Key="colReinstatementType">
<ComboBox BorderThickness="0"
x:Name="cmbStatus1"
IsReadOnly="False"
IsEditable="True"
MinHeight="20"
DisplayMemberPath="part_no"
Text="{xwpf:CellEditorBinding NotifyOnSourceUpdated=True}"
SelectedItem="{Binding Item, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding AvailablePartMaterial, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
</DataTemplate>
<xwpf:CellEditor x:Key="statusEditor">
<xwpf:CellEditor.EditTemplate>
<DataTemplate>
<ComboBox BorderThickness="0"
x:Name="cmbStatus"
IsReadOnly="False"
IsEditable="True"
MinHeight="20"
DisplayMemberPath="part_no"
Text="{xwpf:CellEditorBinding NotifyOnSourceUpdated=True}"
SelectedItem="{Binding Item, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding AvailablePartMaterial, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
</DataTemplate>
</xwpf:CellEditor.EditTemplate>
</xwpf:CellEditor>
</UserControl.Resources>
Item
和 AvailablePartMaterial
确实存在于 SaleSheet
类型中,其集合绑定到数据网格。甚至 Item
属性 也确实被解雇了,这意味着组合框的选定项正在绑定。但是组合框中没有显示任何数据。
CellContentTemplate 仅用于显示目的。通常它用于使用类似 TextBlock 的东西来显示文本。在必须使用编辑器类型的情况下(例如布尔列上的 CheckBox),您需要将其设置为 ReadOnly 以避免任何不必要的问题。
在您的例子中,您有一个带有 CellEditorBinding 作为 CellContentTemplate 的 ComboBox。 CellEditorBinding 仅适用于 CellEditor,因此如果用户使用 CellContentTemplate 的 ComboBox 编辑行的值,则不会影响基础值。
对于您的绑定,请尝试这样的事情:
SelectedValuePath="part_no" // name of column used to identify which record is selected
DisplayMemberPath="part_name" // name of column used to indicate the text/value to display
SelectedValue = {xwpf:CellEditorBinding} // SelectedItem or SelectedIndex can be used instead, depending on the situation/data
关于 ItemsSource,当您在 CellEditor 的 DataTemplate 中时不能直接绑定到它,您需要指明它的位置。例如:
ItemsSource="{Binding Source={x:Static Application.Current}, Path=MyData}">
我正在尝试将组合框添加到 Xceed WPF 数据网格,但无法将 Itemssource 绑定到组合框。这是数据网格的 xaml。
<xwpf:DataGridControl ItemsSource="{Binding SaleDetails}" AutoCreateColumns="False" >
<xwpf:DataGridControl.Columns>
<xwpf:Column FieldName="Status" Title="Status" CellContentTemplate="{StaticResource colReinstatementType}" CellEditor="{StaticResource statusEditor}" />
</xwpf:DataGridControl.Columns>
</xwpf:DataGridControl>
资源
<UserControl.Resources>
<DataTemplate x:Key="colReinstatementType">
<ComboBox BorderThickness="0"
x:Name="cmbStatus1"
IsReadOnly="False"
IsEditable="True"
MinHeight="20"
DisplayMemberPath="part_no"
Text="{xwpf:CellEditorBinding NotifyOnSourceUpdated=True}"
SelectedItem="{Binding Item, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding AvailablePartMaterial, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
</DataTemplate>
<xwpf:CellEditor x:Key="statusEditor">
<xwpf:CellEditor.EditTemplate>
<DataTemplate>
<ComboBox BorderThickness="0"
x:Name="cmbStatus"
IsReadOnly="False"
IsEditable="True"
MinHeight="20"
DisplayMemberPath="part_no"
Text="{xwpf:CellEditorBinding NotifyOnSourceUpdated=True}"
SelectedItem="{Binding Item, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding AvailablePartMaterial, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
</DataTemplate>
</xwpf:CellEditor.EditTemplate>
</xwpf:CellEditor>
</UserControl.Resources>
Item
和 AvailablePartMaterial
确实存在于 SaleSheet
类型中,其集合绑定到数据网格。甚至 Item
属性 也确实被解雇了,这意味着组合框的选定项正在绑定。但是组合框中没有显示任何数据。
CellContentTemplate 仅用于显示目的。通常它用于使用类似 TextBlock 的东西来显示文本。在必须使用编辑器类型的情况下(例如布尔列上的 CheckBox),您需要将其设置为 ReadOnly 以避免任何不必要的问题。
在您的例子中,您有一个带有 CellEditorBinding 作为 CellContentTemplate 的 ComboBox。 CellEditorBinding 仅适用于 CellEditor,因此如果用户使用 CellContentTemplate 的 ComboBox 编辑行的值,则不会影响基础值。
对于您的绑定,请尝试这样的事情:
SelectedValuePath="part_no" // name of column used to identify which record is selected
DisplayMemberPath="part_name" // name of column used to indicate the text/value to display
SelectedValue = {xwpf:CellEditorBinding} // SelectedItem or SelectedIndex can be used instead, depending on the situation/data
关于 ItemsSource,当您在 CellEditor 的 DataTemplate 中时不能直接绑定到它,您需要指明它的位置。例如:
ItemsSource="{Binding Source={x:Static Application.Current}, Path=MyData}">