【问题标题】:Style DataGridColumnHeader with Styles in WPF在 WPF 中使用样式设置 DataGridColumnHeader
【发布时间】:2011-04-22 22:06:49
【问题描述】:

您好,我正在尝试实现一种方法来过滤 DataGrid 中的记录。我的想法是将TextBoxes放在每列的标题中。

我这样做取决于是否按下了切换按钮,但我在标题中应用样式的方式存在问题。

如果我像这样在 DataGridColumn 中应用样式:

<DataGridTextColumn>
    <DataGridTextColumn.HeaderTemplate>
        <DataTemplate>
            (...)
        </DataTemplate>
    </DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>

它会完美运行!

但是如果尝试把它放在一个 Style 中,我会这样做:

<Style TargetType="{x:Type DataGridTextColumn}">
    <Setter Property="Template">
        <ControlTemplate>
            (...)
        </ControlTemplate>
    </Setter>
</Style>

通过使用 ControlTemplate,我们将覆盖背景和 DataGridColumnHeader 的所有默认布局,我不希望这样。我该怎么做?

我真的很想这样做以避免在 XAML 中重复代码。

提前致谢!

【问题讨论】:

    标签: wpf xaml styles resourcedictionary


    【解决方案1】:

    如果您使用 DataTemplate 方法的唯一原因是因为您想定义一次(在某个中心位置)然后在多个位置(例如多个列)使用它,您可以将该 DataTemplate 移动到资源部分,为其分配一个资源键并在您想要的任何地方使用它。

    方法如下:

    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="300" Width="300" Loaded="Window_Loaded">
        <Window.Resources>
            <DataTemplate x:Key="MySpecialHeaderTemplate">
                <TextBox Text="Search..." />
            </DataTemplate>
        </Window.Resources>
        <Grid>
            <DataGrid>
                <DataGrid.Columns>
                    <DataGridTextColumn
                            Binding="{Binding Id}" />
                    <DataGridTextColumn HeaderTemplate="{StaticResource MySpecialHeaderTemplate}"
                            Binding="{Binding Name}" />
                    <DataGridTextColumn HeaderTemplate="{StaticResource MySpecialHeaderTemplate}"
                            Binding="{Binding Age}" />
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
    </Window>
    

    【讨论】:

      猜你喜欢
      • 2013-09-16
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      相关资源
      最近更新 更多