WPF DataGrid - 自定义ComboBox的问题

时间:2009-10-06 16:33:33

标签: wpf datagrid binding combobox

我有一个带有组合框绑定列的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>

谢谢!

1 个答案:

答案 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>