代码之家  ›  专栏  ›  技术社区  ›  Mark

UWP SplitView显示模式叠加-未聚焦

  •  0
  • Mark  · 技术社区  · 8 年前

    我有一个 SplitView :

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

    我也在使用 VisualStateManager 调整 拆分视图 基于应用程序窗口大小:(示例)

    <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 知道什么时候 拆分视图 窗格焦点丢失。现在,在用户单击视图(按设计)之前,将显示按设计的覆盖,但我想知道,当 拆分视图 覆盖已折叠,以便我可以将其他绑定事件添加到 HamburgerMenu .

    从我的经历来看,似乎 VisualStateManager 不更新/更改我的绑定

    DisplayMode="{Binding SplitViewDisplayMode}"
    

    关于如何发现覆盖层是否/何时消失/关闭,有什么想法吗?

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

    关于如何检测或获取的任何想法或想法 拆分视图 告诉我如果 覆盖 Collapsed 当用户单击 拆分视图 ?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Martin Zikmund    8 年前

    要使绑定工作,必须将其指定为 双向 绑定。如果没有这一点,他们将只使用代码中的更改来更新UI,而不是相反:

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

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

    推荐文章