我有一个WPF数据网格,我想在特定的列标题上应用一个按钮。我设法插入按钮,但HeaderText消失了。在这个例子中,我必须绑定到我的TextBlock上的headertext是“Match Ausdruck”吗?
我如何访问此按钮?
我的App.xaml:
<Style x:Key="columnHeaderButton" TargetType="DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<StackPanel Orientation="Horizontal" Width="auto">
<TextBlock Text="Test" VerticalAlignment="Center" />
<Button Style="{StaticResource MyButton}" Width="16" Height="16" VerticalAlignment="Center">
<Button.Background>
<ImageBrush ImageSource="Resources/filter.png"/>
</Button.Background>
</Button>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
My MainWindow.xaml:
<DataGrid x:Name="dgVarConfig" HorizontalAlignment="Left" Margin="10,59,0,0" VerticalAlignment="Top" Height="403" Width="1278" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False" HeadersVisibility="Column">
<DataGrid.Columns>
<DataGridTextColumn HeaderStyle="{StaticResource columnHeaderButton}" Width="auto" Header="Match Ausdruck" Binding="{Binding match_expression}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:1)
据我了解您的问题,您必须调整ControlTemplate
以使其中包含一些ContentPresenter
:
<ControlTemplate>
<StackPanel Orientation="Horizontal" Width="auto">
<ContentPresenter Content={TemplateBinding Content}" />
<Button Style="{StaticResource MyButton}" Width="16" Height="16" VerticalAlignment="Center">
<Button.Background>
<ImageBrush ImageSource="Resources/filter.png"/>
</Button.Background>
</Button>
</StackPanel>
</ControlTemplate>
使用任何ContentPresenter
调整TemplateBinding
属性,例如VerticalAlignment
或HorizontalContentAlignment
。
答案 1 :(得分:0)
我知道这是一篇很老的帖子,但是我很难找到这方面的信息,所以这里对我有用。首先,我假设您询问的TextBlock是当前显示“Test”的那个,除了不显示列名外,其他一切都正常。在这种情况下,您可以像这样设置Text属性:
<TextBlock Text="{Binding}"/>
在旁注上,我知道这不是你要问的,你也可以让按钮显示如下的列文:
<Button>
<TextBlock Text="{Binding}"/>
</Button>