UWP SplitView DisplayMode Overlay - 未聚焦

时间:2017-01-22 01:34:47

标签: xaml data-binding uwp uwp-xaml splitview

我有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}"

关于如何/何时覆盖消失/关闭的任何想法?

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

当用户点击SplitView之外的控件时,有关Overlay如果Collapsed SplitView phSelfie是否为import UIKit import Firebase class SeeSelfieViewController: UIViewController { var storage = FIRStorage.storage() @IBOutlet var phSelfie: UIImageView! override func viewDidLoad() { super.viewDidLoad() let gsRef = storage.reference(forURL: "gs://******-****.appspot.com/profileUsers/") let user = FIRAuth.auth()!.currentUser! let imageRef = gsRef.child("\(user.uid).jpg") imageRef.data(withMaxSize: 1 * 1024 * 1024) { (data, error) in if error != nil { print("\(error?.localizedDescription)") <------ This run the error!! } else { let imageSelfie = UIImage(data: data!) self.phSelfie.image = imageSelfie print("Succes") } } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 的任何想法或想法?

1 个答案:

答案 0 :(得分:1)

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

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

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