我正在尝试将组合框添加到Xceed WPF数据网格中,但无法将Itemssource绑定到组合框。这是datagrid的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
属性也会被触发,这意味着组合框的选定项目正在被绑定。但是组合框中没有显示任何数据。
答案 0 :(得分:2)
CellContentTemplate仅用于显示目的。通常它用于使用TextBlock之类的东西显示文本。在必须使用编辑器类型的情况下(例如布尔列上的CheckBox),您将希望将其设置为ReadOnly以避免任何不必要的问题。
在您的情况下,您有一个带有CellEditorBinding的ComboBox作为CellContentTemplate。 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}">