[英]WPF datagrid button in column header with header text - c#
我有一個 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>
我的 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>
據我了解您的問題,您必須調整您的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>
使用任何TemplateBinding
調整ContentPresenter
屬性,例如VerticalAlignment
或HorizontalContentAlignment
。
我知道這是一篇舊帖子,但我很難找到有關這方面的信息,所以這對我有用。 首先,我假設您要詢問的 TextBlock 是當前顯示“測試”的文本塊,除了不顯示列名外,其他一切正常。 在這種情況下,您可以像這樣設置 Text 屬性:
<TextBlock Text="{Binding}"/>
附帶說明一下,我知道這不是您要問的內容,您也可以讓按鈕像這樣顯示列文本:
<Button>
<TextBlock Text="{Binding}"/>
</Button>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.