![](/img/trans.png)
[英]How to allow control inside the splitview's pane close the pane in uwp?
[英]How to use splitview's pane in visualstate to achieve adaptive effect in UWP?
我在StackPanel中有一些導航按鈕,我想將它們放在splitview的窗格中。 打開splitview的窗格時,堆棧面板的方向是水平的,而當關閉窗格時,堆棧面板的方向是垂直的,因此用戶始終可以看到導航按鈕。 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>
但是我收到錯誤,例如'IsPaneOpen' was not found in type 'SplitView'.
可'IsPaneOpen' was not found in type 'SplitView'.
屬性'IsPaneOpen' was not found in type 'SplitView'.
我得到了飛機B,即使用OnPaneClosing
和OnPaneOpen
類的事件,但是只有PaneClosing
事件,沒有打開事件。 我想知道是否有人可以提出任何建議。
自適應觸發器使用MinWidth
和MinHeight
來檢查觸發器條件。 它不檢查任何布爾條件。 您需要使用StateTrigger
並結合IsPaneOpen
到IsActive
觸發“PaneOpenState”。 但是,如果要觸發“ PaneClosedState”,則不能將其直接綁定到StateTrigger
IsActive
。 您需要具有從StateTriggerBase類派生的其他一些狀態觸發器,例如這些令人敬畏的WindowsStateTriggers 。 我正在使用上述集合中的IsFalseStateTrigger
。
該代碼應類似於:
<Page ...
xmlns:triggers="using:WindowsStateTriggers">
...
<VisualState x:Name="PaneOpenState">
<VisualState.StateTriggers>
<StateTrigger IsActive="{Binding IsPaneOpen, ElementName=MySplit}"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="NavigationControl.RootGrid.StackPanel.Orientation" Value="Horizontal"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="PaneClosedState">
<VisualState.StateTriggers>
<triggers:IsFalseStateTrigger Value="{Binding ElementName=MySplit, Path=IsPaneOpen}" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="NavigationControl.RootGrid.StackPanel.Orientation" Value="Vertical"/>
</VisualState.Setters>
</VisualState>
編輯
在我們的一位朋友指出之后,我知道我忘記了最明顯的方法而不是使用IsFalseStateTrigger
。 您可以使用類似NotTrueConverter
的轉換器來對布爾值NotTrueConverter
,並使用StateTrigger在“ PaneClosedState”中使用StateTrigger
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.