簡體   English   中英

使用上下文菜單時如何更改數據網格 WPF C# 中選定行的字體顏色

[英]How to change font color of selected row in datagrid WPF C# when using context menu

我正在使用 Mahapps.Metro 庫開發 WPF 應用程序。

有一個 DataGrid,我想在添加的行上使用 ContextMenu,因為我在 datagrid 資源中定義它

<DataGrid.Resources>
    <ContextMenu x:Key="RowMenu" 
        DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
        <MenuItem Header="Borrar detalle" Click="delete_Click" />
        <MenuItem Header="Editar detalle" Click="edit_Click" />
    </ContextMenu>
</DataGrid.Resources>

並在行樣式中添加該上下文菜單

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow" >
        <Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
    </Style>
</DataGrid.RowStyle>

這樣做的問題是,當用戶單擊該行時,它似乎消失了(字體顏色變為白色)。 我嘗試將以下內容添加到行樣式中,但似乎不起作用。

 <DataGrid.RowStyle>
    <Style TargetType="DataGridRow" >
        <Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="BorderBrush" Value="LightSkyBlue"/>
                <Setter Property="Foreground" Value="Black"/>
                <Setter Property="Background" Value="LightSkyBlue"/>
            </Trigger>
            <Trigger Property="IsMouseOver" Value="False">
                <Setter Property="BorderBrush" Value="Transparent"/>
                <Setter Property="Foreground" Value="Black"/>
                <Setter Property="Background" Value="Transparent"/>
            </Trigger>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="BorderBrush" Value="Transparent"/>
                <Setter Property="Foreground" Value="Black"/>
                <Setter Property="Background" Value="Transparent"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>

我的最后一個選擇是使用網格中的上下文菜單而不是行,但我想知道是否有什么我可以做的事情來完成這項工作。 希望你能幫忙,謝謝。

您應該在定義的樣式上使用基於功能:

<DataGrid.RowStyle>
<Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}">
    <Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
</Style>
</DataGrid.RowStyle>

暫無
暫無

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

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