Flyout上的VisualStateManager不突出显示整个区域
我有一个VisualStateManager,当指针在项目上时控制背景颜色。 问题是,它不会突出显示整个区域,只是文本和图标周围的一小部分。 这是我的代码:
未完全突出显示
编辑:
谢谢大家的答案。 我会尽可能地研究这些解决方案; 我最终做了一些不同的事情 – 使区域变大,这样你就可以通过添加填充来看到亮点。 这不是我想要的,这就是为什么我会研究这些。
它不会突出显示整个区域,因为您在MenuFlyoutItem
中使用了Visual State,而突出显示区域是MenuFlyoutItem
的区域。
您可以在Visual Studio的Live Visual Tree中看到这一点。 要清楚地看到这一点,我们可以在Simulator中运行应用程序,并在Live Visual Tree中选中“在正在运行的应用程序中显示布局装饰” 。 然后你会看到MenuFlyoutItem
的大小。
在Live Visual Tree中选择MenuFlyoutItem
时,其区域将为蓝色。 在我的图片中不清楚,你可以自己尝试一下。
因此,为了突出整个区域,我们需要让MenuFlyoutItem
填充整个MenuFlyoutPresenter
,为此,我们需要通过设置MenuFlyoutPresenterStyle
编辑MenuFlyout
的MenuFlyoutPresenterStyle
。 您可以在MenuFlyoutPresenter样式和模板中找到默认的MenuFlyoutPresenter
样式。
要设置MenuFlyoutPresenterStyle
,我们可以从网站或Visual Studio中复制默认样式,在“ 文档大纲 ”中选择“ [MenuFlyout] ”并右键单击,然后选择“ 编辑其他模板 ”→“ 编辑MenuFlyoutPresenterStyle ”→“ 编辑副本” …… “
在样式中,我们需要通过将其设置为0
来删除ItemsPresenter
中的Margin
然后MenuFlyoutItem
周围没有边距。 但这还不够,因为MenuFlyoutPresenter
高度为32分钟:
32
如果MenuFlyoutItem
的高度小于32,则它也无法突出显示整个区域。 要解决此问题,可以将MinHeight
属性设置为0
。
或者像在StackPanel
设置Margin
一样增加MenuFlyoutItem
的高度:
完整的MenuFlyoutPresenterStyle可能如下:
编辑MenuFlyout的风格,你将实现你想要的,我会做那样的事情