【发布时间】:2016-10-04 00:17:45
【问题描述】:
我在 StackPanel 中有一些导航按钮,我想将它们放在 splitview 的窗格中。当 splitview 的面板打开时,stackpanel 的方向是水平的,而当面板关闭时,stackpanel 的方向是垂直的,这样用户总是能够看到导航按钮。 XAML代码如下
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="PaneViewStates">
<VisualState x:Name="PaneClosedState">
<VisualState.StateTriggers>
<StateTrigger IsActive="{Binding Path=IsPaneOpen, ElementName=SplitView, Converter={StaticResource BooleanNegationConverter}}"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="NavigationControl.RootGrid.StackPanel.Orientation" Value="Vertical"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="PaneOpenState">
<VisualState.StateTriggers>
<StateTrigger IsActive="{Binding Path=IsPaneOpen, ElementName=SplitView}"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="NavigationControl.RootGrid.StackPanel.Orientation" Value="Horizontal"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
但是我得到了像 The attachable property 'IsPaneOpen' was not found in type 'SplitView'. 这样的错误
我得到了飞机B,即使用OnPaneClosing和OnPaneOpen之类的事件,但是只有PaneClosing事件,没有开幕事件。我想知道是否有人可以提出任何建议。
【问题讨论】:
-
我认为您应该在这里使用 StateTrigger 而不是 AdaptiveTrigger,例如
-
@AndreyAshikhmin 仍然不会触发事件,无论窗格是打开还是关闭。我还测试了其他一些控件的可见性,以确保它不是 NavigationControl.RootGrid.StackPanel.Orientation 的问题
-
尝试命名您的 StackPanel,f.e. 'AdaptiveStackPanel' 并将目标设置为:
AdaptiveStackPanel.Orientation
标签: c# uwp windows-10-universal windows-10-mobile uwp-xaml