UWP SplitView DisplayMode Overlay - 不在焦点

UWP SplitView DisplayMode Overlay - not in focus

我有一个 SplitView:

<SplitView Name="splitView" 
   DisplayMode="{Binding SplitViewDisplayMode}" 
   IsPaneOpen="{Binding SplitViewIsPaneOpen}" 
   OpenPaneLength="200" CompactPaneLength="51"/>

我也在使用 VisualStateManager 根据应用 window 大小调整 SplitView:(示例)

<VisualState.StateTriggers>
   <AdaptiveTrigger MinWindowWidth="500"></AdaptiveTrigger>
</VisualState.StateTriggers>

到目前为止一切正常,但我 运行 在激活上面的触发器和下面的状态时出现意外结果。

<VisualState.Setters>
   <Setter Value="True" Target="splitView.IsPaneOpen"></Setter>
   <Setter Value="Overlay" Target="splitView.DisplayMode"></Setter>
</VisualState.Setters>

我似乎找不到检测事件的方法,以便我的 ViewModel 知道 SplitView 窗格焦点何时丢失。现在按照设计叠加显示,直到用户单击视图(按设计),但我想知道 SplitView 叠加何时折叠,以便我可以将其他绑定事件添加到我的 HamburgerMenu .

根据我的经验,VisualStateManager 似乎没有 update/change 我的绑定

DisplayMode="{Binding SplitViewDisplayMode}"

关于如何发现 if/when 叠加层 disappears/Closes 有什么想法吗?

我唯一能想到的就是创建发现Window大小的方法,然后确定SplitView是否应该是Inline/Compact/Overlay.. 这是可行的,但会产生很多潜在的组合。

关于如何检测或获取 SplitView 以在用户单击 SplitView 之外的控件时告诉我 Overlay 是否为 Collapsed 的任何想法或想法?

要使绑定有效,您必须将它们指定为双向 绑定。如果没有这个,他们只会用您的代码更改来更新 UI,而不是相反:

<SplitView Name="splitView" 
       DisplayMode="{Binding SplitViewDisplayMode, Mode=TwoWay}" 
       IsPaneOpen="{Binding SplitViewIsPaneOpen, Mode=TwoWay}" 
       OpenPaneLength="200" CompactPaneLength="51"/>

现在,只要状态发生变化,您的属性就会正确更新。