【问题标题】:WPF DataGridComboboxColumn same style as ComboboxWPF DataGridComboboxColumn 与 Combobox 样式相同
【发布时间】:2015-02-09 21:30:10
【问题描述】:

我有一个包含数据网格的应用程序。在此数据网格中,有类型为 DataGridComboboxColumn 的列。诀窍是我在资源字典中定义了一个以组合框为目标的样式,但它似乎不适用于编辑模式下的 DataGridComboboxColumn,但它适用于“常规”组合框。

我无法重复资源,因为 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>

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    您可以将 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>
    

    【讨论】:

    • 谢谢,这就是我刚刚发布后的解决方案......像往常一样大声笑
    猜你喜欢
    • 2013-03-04
    • 2021-10-18
    • 2012-11-10
    • 1970-01-01
    • 2010-12-26
    • 2014-11-11
    • 2019-07-11
    • 1970-01-01
    • 2012-10-28
    相关资源
    最近更新 更多