簡體   English   中英

帶有標題文本的列標題中的 WPF 數據網格按鈕 - C#

[英]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屬性,例如VerticalAlignmentHorizontalContentAlignment

我知道這是一篇舊帖子,但我很難找到有關這方面的信息,所以這對我有用。 首先,我假設您要詢問的 TextBlock 是當前顯示“測試”的文本塊,除了不顯示列名外,其他一切正常。 在這種情況下,您可以像這樣設置 Text 屬性:

<TextBlock Text="{Binding}"/>

附帶說明一下,我知道這不是您要問的內容,您也可以讓按鈕像這樣顯示列文本:

<Button>
    <TextBlock Text="{Binding}"/>
</Button>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM