2015-02-09 47 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