在NavigationView标头中,按钮的PointerOver VisualState受限制

时间:2019-07-17 16:18:43

标签: c# uwp

我正在处理我的UWP项目,当我在NavigationView Header模板中放置一个按钮时,当鼠标位于底部5个左右像素时,它只有PointerOver VisualState,如下所示。点表示鼠标在标题按钮上的位置。

https://imgur.com/fVf1BpD

https://imgur.com/PMXol8o

下面是我的简单代码。

<NavigationView x:Name="NavigationView" Header="" SelectionChanged="{x:Bind mainViewModel.selectionChanged, Mode=OneWay}" Background="{ThemeResource SystemControlAltHighAcrylicWindowBrush}">
        <NavigationView.HeaderTemplate>
            <DataTemplate>
                <StackPanel Visibility="{Binding listsClicked}">
                    <Button Content="Food"/>
                </StackPanel>

如果将CommandBar放在标题中,则会发生相同的问题。如何允许PointerOver VisualState用于Button的整个字段?

1 个答案:

答案 0 :(得分:0)

实际上,您的指针并没有移到按钮上,而是被标题栏挡住了。

它们之间的关系就像下图所示。

baa2eb5d-831d-4dbe-a3eb-67bf7f5ccd0b.png

原因是您使用

CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;

但是标题栏没有隐藏,而是透明。它仍然停留在原处,并且位于所有元素的顶部。

您有两种方法可以解决此问题。

  1. 更改UI布局并向下移动可操作的元素(如按钮)
  2. 使用Window.Current.SetTitleBar(ele)将元素指定为标题栏,以使其具有标题栏的特征,同时避免元素被遮挡。

最诚挚的问候。