0

我有一个SplitView

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

我也VisualStateManager用来调整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不会更新/更改我的绑定

DisplayMode="{Binding SplitViewDisplayMode}"

关于我如何发现叠加层是否/何时消失/关闭的任何想法?

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

关于如何检测或SplitView告诉我是否OverlayCollapsed用户单击外部控件的任何想法或想法SplitView

4

1 回答 1

1

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

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

现在,每当状态更改时,您的属性都应该正确更新。

于 2017-01-22T08:59:31.927 回答