WPF扩展器-鼠标悬停时突出显示标题

010

我有一个ItemsControl,其中datatemplate是扩展器。以下是用于exapnder标头的模板和样式。

<DataTemplate x:Key="expanderHeader">
    <ContentPresenter Content="{Binding}" TextBlock.Foreground="Blue"/>
    <DataTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="TextBlock.FontWeight" Value="Bold"/>
        </Trigger>
    </DataTemplate.Triggers>
</DataTemplate>

<Style TargetType="Expander">
    <Setter Property="HeaderTemplate" Value="{StaticResource expanderHeader}"/>
</Style>

当鼠标移到实际的标题文本上时,标题被加粗,但是如果鼠标悬停在扩展器的任何部分上,我想要的是将标题文本加粗。为了解决这个问题,我认为我需要将触发器移到扩展器样式本身,但是在这里我不确定如何确保仅扩展器中的标头而不是所有内容都被加粗,这就是我使用以下样式时发生的情况:

    <Style TargetType="Expander">
        <Setter Property="HeaderTemplate" Value="{StaticResource expanderHeader}"/>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="TextBlock.FontWeight" Value="Bold" />
            </Trigger>
        </Style.Triggers>           
    </Style>

我如何调整上面的内容,以便当鼠标在扩展器的任何部分(当然是扩展的)上方移动时,仅将标题文本加粗。

学习

我能想到的最简单的解决方案是创建第二个DataTemplate并在鼠标悬停时切换。

<DataTemplate x:Key="expanderHeader">
    <ContentPresenter Content="{Binding}" TextBlock.Foreground="Blue"/>
</DataTemplate>
<DataTemplate x:Key="expanderHeaderMouseOver">
    <ContentPresenter Content="{Binding}" TextBlock.Foreground="Blue" TextElement.FontWeight="Bold"/>
</DataTemplate>

然后更改扩展器的样式以在鼠标悬停时设置HeaderTemplate。

<Style TargetType="Expander">
    <Setter Property="HeaderTemplate" Value="{StaticResource expanderHeader}"/>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="HeaderTemplate" Value="{StaticResource expanderHeaderMouseOver}"/>
        </Trigger>
    </Style.Triggers>
</Style>

显然,这意味着您需要维护2个数据模板,这并不是很理想...那里可能有一个更好的解决方案(也许使用附加属性),但是我什么也做不了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

wpf-扩展器标题适合内容宽度?

来自分类Dev

WPF如何始终在TreeView上显示扩展器

来自分类Dev

当用户将鼠标悬停在wpf中时如何突出显示行?

来自分类Dev

鼠标悬停时突出显示图像部分,以响应浏览器大小变化

来自分类Dev

将鼠标悬停在XAML WPF上时,将按钮默认的突出显示颜色更改为透明颜色?

来自分类Dev

WPF DataGrid扩展器中的分组行在右侧添加了额外的列,当所有扩展器都关闭时消失

来自分类Dev

WPF - 在页面上将 HorizontalAlignment 设置为 Left 时拉伸扩展器

来自分类Dev

鼠标悬停时单词突出显示

来自分类Dev

如何在 WPF 中为所有子节点显示可见的 treeviewItem 扩展器箭头?

来自分类Dev

扩展时修改扩展器头子级

来自分类Dev

扩展时修改扩展器头子级

来自分类Dev

扩展器内部的DataGrid列标题绑定:扩展器折叠时找不到绑定源

来自分类Dev

扩展器内部的DataGrid列标题绑定:折叠扩展器时找不到绑定源

来自分类Dev

如果标题为空,则隐藏整个扩展器

来自分类Dev

基本扩展器样式,覆盖标题颜色

来自分类Dev

如果标题为空,则隐藏整个扩展器

来自分类Dev

扩展器标题的宽度影响外部的scrollviewer

来自分类Dev

基本扩展器样式,覆盖标题颜色

来自分类Dev

WPF扩展器未扩展

来自分类Dev

WPF扩展器未扩展

来自分类Dev

当我们打开新的扩展器时,Collapse在`Datatemplate`中打开了扩展器

来自分类Dev

鼠标悬停时如何阻止主菜单扩展

来自分类Dev

在鼠标悬停时展开材质扩展面板

来自分类Dev

带多个按钮的WPF扩展器

来自分类Dev

带GridSplitter的WPF扩展器

来自分类Dev

带GridSplitter的WPF扩展器

来自分类Dev

WPF +扩展器控制问题

来自分类Dev

leafletjs:鼠标悬停时突出显示折线

来自分类Dev

WPF-鼠标悬停时更改标签外观

Related 相关文章

  1. 1

    wpf-扩展器标题适合内容宽度?

  2. 2

    WPF如何始终在TreeView上显示扩展器

  3. 3

    当用户将鼠标悬停在wpf中时如何突出显示行?

  4. 4

    鼠标悬停时突出显示图像部分,以响应浏览器大小变化

  5. 5

    将鼠标悬停在XAML WPF上时,将按钮默认的突出显示颜色更改为透明颜色?

  6. 6

    WPF DataGrid扩展器中的分组行在右侧添加了额外的列,当所有扩展器都关闭时消失

  7. 7

    WPF - 在页面上将 HorizontalAlignment 设置为 Left 时拉伸扩展器

  8. 8

    鼠标悬停时单词突出显示

  9. 9

    如何在 WPF 中为所有子节点显示可见的 treeviewItem 扩展器箭头?

  10. 10

    扩展时修改扩展器头子级

  11. 11

    扩展时修改扩展器头子级

  12. 12

    扩展器内部的DataGrid列标题绑定:扩展器折叠时找不到绑定源

  13. 13

    扩展器内部的DataGrid列标题绑定:折叠扩展器时找不到绑定源

  14. 14

    如果标题为空,则隐藏整个扩展器

  15. 15

    基本扩展器样式,覆盖标题颜色

  16. 16

    如果标题为空,则隐藏整个扩展器

  17. 17

    扩展器标题的宽度影响外部的scrollviewer

  18. 18

    基本扩展器样式,覆盖标题颜色

  19. 19

    WPF扩展器未扩展

  20. 20

    WPF扩展器未扩展

  21. 21

    当我们打开新的扩展器时,Collapse在`Datatemplate`中打开了扩展器

  22. 22

    鼠标悬停时如何阻止主菜单扩展

  23. 23

    在鼠标悬停时展开材质扩展面板

  24. 24

    带多个按钮的WPF扩展器

  25. 25

    带GridSplitter的WPF扩展器

  26. 26

    带GridSplitter的WPF扩展器

  27. 27

    WPF +扩展器控制问题

  28. 28

    leafletjs:鼠标悬停时突出显示折线

  29. 29

    WPF-鼠标悬停时更改标签外观

热门标签

归档