WPF DataGridComboBoxColumn 样式

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15443091/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 08:06:49  来源:igfitidea点击:

WPF DataGridComboBoxColumn style

wpfstylesdatagridcomboboxcolumn

提问by toosensitive

I use ComboboxColumnin DataGridwhich works fine.

我用ComboboxColumnDataGrid工作正常。

However there is a style issue:
When cursor is not on the column, the ComboboxColumnlooks like a textboxColumn. Once I click it, a tiny arrow on the right corner displays so it looks like a combobox.

但是有一个样式问题:
当光标不在列上时,ComboboxColumn看起来像一个textboxColumn. 单击它后,右上角会显示一个小箭头,因此它看起来像一个组合框。

I want it to display like a combobox even when it is not clicked or focused. I feel it is ElementStyle, but not sure what to change to exactly. Does someone know how to do this?

即使没有单击或聚焦,我也希望它像组合框一样显示。我觉得是ElementStyle,但不知道具体要改成什么。有人知道怎么做吗?

xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit" 

                    <dg:DataGridComboBoxColumn Width="200" x:Name="column" Header="Column" 
    SelectedValueBinding="{Binding Path=RelParams.ColumnName, UpdateSourceTrigger=PropertyChanged, 
    diagnostics:PresentationTraceSources.TraceLevel= High}"
    DisplayMemberPath="cName"
    SelectedValuePath="cName">

    <dg:DataGridComboBoxColumn.ElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" Value="{Binding RelInfo.Columns}" />
        </Style>
    </dg:DataGridComboBoxColumn.ElementStyle>
    <dg:DataGridComboBoxColumn.EditingElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" Value="{Binding RelInfo.Columns}" />
        </Style>
    </dg:DataGridComboBoxColumn.EditingElementStyle>

</dg:DataGridComboBoxColumn>

采纳答案by kmatyaszek

You can use DataGridTemplateColumn(msdn).

您可以使用DataGridTemplateColumnmsdn)。

Example:

例子:

<dg:DataGridTemplateColumn Header="MyColumn">
    <dg:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox ... />
        </DataTemplate>
    </dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>