WPF DataGridComboboxColumn 与 Combobox 相同的样式
WPF DataGridComboboxColumn same style as Combobox
我有一个包含数据网格的应用程序。在此数据网格中,有 DataGridComboboxColumn 类型的列。诀窍是我在针对 Combobox 的资源字典中定义了一个样式,但它似乎不适用于编辑模式下的 DataGridComboboxColumn,但它适用于 "regular" 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>
您可以将 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>
我有一个包含数据网格的应用程序。在此数据网格中,有 DataGridComboboxColumn 类型的列。诀窍是我在针对 Combobox 的资源字典中定义了一个样式,但它似乎不适用于编辑模式下的 DataGridComboboxColumn,但它适用于 "regular" 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>
您可以将 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>