2015-02-09 46 views
0

我有一个包含数据网格的应用程序。在这个数据网格中,有DataGridComboboxColumn类型的列。诀窍是我在资源字典中定义了一个定位Combobox的样式,但它似乎不适用于编辑模式下的DataGridComboboxColumn,但它在“常规”Combobox上执行。WPF DataGridComboboxColumn风格与Combobox相同

我无法重复资源,因为DataGridComboboxColumn不可用作为目标类型。

有什么想法?

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="Resources.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
<Style x:Key="StandardComboBox" TargetType="ComboBox"> 
     <Setter Property="Foreground" Value="{StaticResource Foreground}"/> 
     <Setter Property="SnapsToDevicePixels" Value="true"/> 
     <Setter Property="OverridesDefaultStyle" Value="true"/> 
     <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 
     <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> 
     <Setter Property="ScrollViewer.CanContentScroll" Value="true"/> 
     <Setter Property="MinWidth" Value="120"/> 
     <Setter Property="MinHeight" Value="20"/> 
     <Setter Property="Template"> 
     ... 
     </Setter> 
     <Style.Resources> 
      <Style TargetType="ComboBoxItem"> 
       <Setter Property="SnapsToDevicePixels" Value="true"/> 
       <Setter Property="OverridesDefaultStyle" Value="true"/> 
       <Setter Property="Template"> 
       ... 
       </Setter> 
      </Style> 
     </Style.Resources> 
    </Style> 
</ResourceDictionary> 


<Window x:Class="OtdrQualifTools.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Stretch" ItemsSource="{Binding AcquisitionList}" 
           Margin="0,200,0,0" Name="dataGridAcquisitions" VerticalAlignment="Top" > 
      <DataGrid.Columns> 
       <DataGridComboBoxColumn Header="Mode" Width="SizeToHeader" 
                SelectedItemBinding="{Binding AcquisitionMode}" 
                ItemsSource="{Binding Source={StaticResource AcquisitionModeValues}}"/> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Grid> 
</Window> 

回答

3

您可以将EditingElementStyle分配给您创建的组合框样式。请参考以下代码。

<DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Stretch" ItemsSource="{Binding AcquisitionList}" 
          Margin="0,200,0,0" Name="dataGridAcquisitions" VerticalAlignment="Top" > 
      <DataGrid.Columns> 
       <DataGridComboBoxColumn Header="Mode" Width="SizeToHeader" 
             SelectedItemBinding="{Binding AcquisitionMode}" 
             EditingElementStyle="{StaticResource StandardComboBox}" 
             ItemsSource="{Binding Source={StaticResource AcquisitionModeValues}}"/> 
      </DataGrid.Columns> 
     </DataGrid> 
+0

谢谢,这是我来解决刚刚发布......像往常一样笑后 – GuillaumeA 2015-02-10 13:15:27