2011-04-08 53 views
0

我正在使用DataGrid。一列顯示文本,但其背後的數據僅包含一個ID。這個ID必須以某種方式轉換爲一個字符串。WPF DataGrid中的Lookup-id控件

我需要的東西像一個組合框與性能的ItemsSource的DisplayMemberPath的SelectedValueSelectedValuePath。但不是顯示一個按鈕,只能有一個文本。有一些控制嗎?

這一工程(想的東西,看起來像文本交換組合框):

<DataGridTemplateColumn Header="Leistungsart" MinWidth="100"> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <ComboBox ItemsSource="{Binding Source={StaticResource ResourceKey=viewModel}, Path=Leistungsarten}"          
             DisplayMemberPath="Bezeichnung" 
             SelectedValue="{Binding Path=BDELeistungsartID, Mode=OneWay, Converter={StaticResource ResourceKey=NullableInt2IntConverter}}" 
             SelectedValuePath="BDELeistungsartID" 
             IsEnabled="false" 
             IsEditable="False" 
             Height="35">         
    </ComboBox> 
</DataTemplate> 

回答

1

你可以使用一個組合框,但覆蓋模板屬性顯示只是一個標籤。您也必須重新創建Click事件。

最簡單的方法是使用像Snoop或Blend這樣的工具,看看默認的ComboBox模板是什麼樣的,並將其修改爲你想要的。

1

非常感謝您的幫助。是的,這與模板屬性爲我工作:

<ComboBox ItemsSource="{Binding Source={StaticResource ResourceKey=viewModel}, Path=Leistungsarten}"          
            DisplayMemberPath="Bezeichnung" 
            SelectedValue="{Binding Path=BDELeistungsartID, Mode=OneWay, Converter={StaticResource ResourceKey=NullableInt2IntConverter}}" 
            SelectedValuePath="BDELeistungsartID"> 
          <ComboBox.Template> 
           <ControlTemplate> 
            <Label Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.Bezeichnung}" 
              Margin="0,0,0,0" Padding="0,0,0,0"/> 
           </ControlTemplate> 
          </ComboBox.Template> 
         </ComboBox>