Flyout 上的 VisualStateManager 未突出显示整个区域 [英] VisualStateManager on Flyout not highlighting entire area

查看:23
本文介绍了Flyout 上的 VisualStateManager 未突出显示整个区域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 VisualStateManager,当指针悬停在项目上时,它控制背景颜色.问题是,它没有突出显示整个区域,只是文本和图标周围的一小部分.这是我的代码:

当在 Live Visual Tree 中选择 MenuFlyoutItem 时,它的区域会是蓝色的.我的图看不清楚,你可以自己试试.

所以要突出显示整个区域,我们需要让 MenuFlyoutItem 填充完整的 MenuFlyoutPresenter,为此,我们需要编辑 MenuFlyout 的样式code> 通过设置 MenuFlyoutPresenterStyle.您可以在 MenuFlyoutPresenter 样式和模板.

要设置MenuFlyoutPresenterStyle,我们可以从网站或Visual Studio中复制默认样式,在文档大纲"中选择[MenuFlyout]"strong>"并右键单击,然后选择编辑其他模板"→编辑 MenuFlyoutPresenterStyle"→编辑副本...".

在样式中,我们需要将ItemsPresenter中的Margin设置为0

那么 MenuFlyoutItem 周围将没有边距.然而这还不够,因为 MenuFlyoutPresenter 有 32 分钟的高度:

<x:Double x:Key="MenuFlyoutThemeMinHeight">32</x:Double>

如果MenuFlyoutItem的高度小于32,也不能高亮整个区域.要解决这个问题,您可以将 MinHeight 属性设置为 0.

或者增加MenuFlyoutItem的高度,比如在你的StackPanel中设置Margin:

<SymbolIcon Margin="10,0" Symbol="删除"/><TextBlock Text="{TemplateBinding Text}"/></StackPanel>

完整的 MenuFlyoutPresenterStyle 可能如下所示: