我有一个带有组合框绑定列的Datagrid,其工作原理如下:
<tk:DataGridComboBoxColumn SelectedValueBinding="{Binding DefaultLocationID}"
SelectedValuePath="LocationID"
DisplayMemberPath="LocationName"
Header="Default Location"
ItemsSource="{Binding Source={StaticResource CustomerLocations}}">
</tk:DataGridComboBoxColumn>
最终我想自定义下拉列表以显示'ID'和'Name',这样就可以了解TemplateColumn。从小处开始,我无法得到以下简单示例,它应该替换标准的DataGridComboBoxColumn。下拉列表显示正常,但是当我'选择'下拉项时,它不接受并返回到先前的值。我尝试过'Mode = TwoWay'的变种,但没有运气。我需要'CellEditingTemplate'吗?
DefaultLocationID是正在编辑的外键字段,而'LocationID'是'CustomerLocations'中的列。
<tk:DataGridTemplateColumn Header="Default Location">
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox VerticalAlignment="Top"
SelectedItem="{Binding LocationID, Mode=TwoWay}"
SelectedValue="{Binding DefaultLocationID, Mode=TwoWay}"
ItemsSource="{Binding Source={StaticResource CustomerLocations}}"
SelectedValuePath="LocationID"
DisplayMemberPath="LocationName" >
</ComboBox>
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
谢谢!
答案 0 :(得分:0)
您可以发布CustomerLocations资源的相关部分吗?您还可以发布网格绑定的类类型吗?
尝试从ComboBox中删除SelectedValuePath,DisplayMemberPath和SelectedValue。
如果要在组合框中显示多个数据,请参阅以下XAML
<ComboBox ...>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding LocationId}"} />
<TextBlock Text=" - "/>
<TextBlock Text="{Binding LocationName}"} />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>