【问题标题】:Caliburn.micro, SplitView and navigationCaliburn.micro、SplitView 和导航
【发布时间】:2015-12-15 15:43:23
【问题描述】:

我对 Caliburn.Micro NavigationService 和 UWP SplitView 控件有疑问。

一级导航 的示例使用 SplitView :https://github.com/Caliburn-Micro/Caliburn.Micro/tree/3.0.0/samples/Caliburn.Micro.HelloUWP

在此示例中,NavigationService 绑定到 SplitView 的内容部分中的 Frame。如何在没有 SplitView 的情况下打开新页面,即实现 二级导航

提前致谢

【问题讨论】:

    标签: wpf windows-phone caliburn.micro uwp


    【解决方案1】:

    不确定这是否是“最佳”方式,但我所做的是将 ViewModel 添加到 ShellView 中,其中包含我不希望 SplitView 可用的所有页面类型的列表。

    然后我在 SplitView 中注册框架的 OnNavigated 事件,每次触发此事件时,我都会在 ShellView 后面的 ViewModel 上触发一个方法。

    在该方法中,我将 SplitView 控件的类型从 Overlay 切换为 Inline,并将属性 IsOpen 设置为 false。这样它就对用户完全隐藏了。

    详细代码(但不使用 Caliburn)可以在这里找到: https://github.com/AppCreativity/Kliva/blob/master/Kliva/Controls/KlivaApplicationFrame.cs https://github.com/AppCreativity/Kliva/blob/master/Kliva/ViewModels/SidePaneViewModel.cs

    【讨论】:

    • 感谢您的回复。不幸的是,当它的 DisplayMode 和 IsPaneOpen 属性由 VisualStates 控制时,此方法不适用于自适应 SplitView。更改屏幕方向(或调整窗口大小,例如)SplitView 属性被覆盖。当然,我可以从 c# 代码控制 VisualStates。但我认为这不是正确的方式
    • 是的,这是真的...但是我通过 MVVM 绑定这些属性,因此您可以在 setter/getter 中添加额外的逻辑,以确保设置正确的值,即使它们是通过视觉状态更改的
    猜你喜欢
    • 2017-03-25
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2014-08-06
    相关资源
    最近更新 更多