首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF DataGrid RowDetailsTemplate焦点颜色

WPF DataGrid RowDetailsTemplate焦点颜色
EN

Stack Overflow用户
提问于 2019-10-01 19:17:19
回答 1查看 71关注 0票数 0

我有一个DataGrid和一个RowDetailsTemplate。我希望背景色始终与DataGridTemplateColumn相匹配,但是,当焦点移到工具栏时,焦点颜色在DataGridTemplateColumns中保持,但在RowDetailsTemplate中丢失。如何维护RowDetailsTemplate上的标准焦点行为?

代码语言:javascript
复制
<DataGrid.RowDetailsTemplate>
<DataTemplate>
    <Border
        Margin="0,0,-6,0"
        Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsPresenter}}, Path=ActualWidth}"
        HorizontalAlignment="Left">
        <TextBlock Text="{Binding PreviewMessage}" Padding="32,0,32,8" TextWrapping="Wrap">
            <TextBlock.Style>
                <Style TargetType="TextBlock">
                    <Style.Triggers>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding IsSelected}" Value="True" />
                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}, Path=IsKeyboardFocusWithin}" Value="False" />
                            </MultiDataTrigger.Conditions>
                            <MultiDataTrigger.Setters>
                                <Setter Property="Background" Value="{x:Static SystemColors.InactiveSelectionHighlightBrush}" />
                                <Setter Property="Foreground" Value="{x:Static SystemColors.InactiveSelectionHighlightTextBrush}" />
                            </MultiDataTrigger.Setters>
                        </MultiDataTrigger>

                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding IsSelected}" Value="True" />
                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}, Path=IsKeyboardFocusWithin}" Value="True" />
                            </MultiDataTrigger.Conditions>
                            <MultiDataTrigger.Setters>
                                <Setter Property="Background" Value="{x:Static SystemColors.HighlightBrush}" />
                                <Setter Property="Foreground" Value="{x:Static SystemColors.HighlightTextBrush}" />
                            </MultiDataTrigger.Setters>
                        </MultiDataTrigger>

                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>
    </Border>
</DataTemplate>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-02 11:57:26

绑定到IsSelectionActive属性而不是IsKeyboardFocusWithin属性:

代码语言:javascript
复制
<Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
    AncestorType={x:Type DataGrid}}, Path=IsSelectionActive}" Value="True" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58190998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档