[英]Disable Flyout based on VisualState
我嘗試基於VisualStateManager
添加/刪除MenuFlyout
。
我有兩種狀態Touch
和NoTouch
。 我想在名為rowGrid
的網格上設置rowGrid
。 我嘗試了不同版本的VisualStates。 例如:
<VisualStateGroup x:Name="TouchGroup">
<VisualState x:Name="Touch">
<VisualState.Setters>
<Setter Target="rowGrid.ContextFlyout">
<Setter.Value>
<MenuFlyout >
<MenuFlyoutItem Text="Play" />
</MenuFlyout>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="NoTouch">
<VisualState.Setters>
<Setter Target="rowGrid.ContextFlyout" Value="{x:Null}" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
但是,一旦使用StateManager.GoToState(...)
方法激活了NoTouch
狀態,這將引發COMException(E_FAIL)。 另一個狀態將設置“彈出”,但是沒有任何內容可以提供空白菜單。
網格本身在ListView
的DataTemplate
內部
我想念什么?
禁用基於VisualState的彈出
Flyout
是延遲加載控制,無法使用VisualState
初始化,需要在xaml中進行初始化。 如果要基於VisualState
禁用Flyout
,則可以更改隱藏Flyout
的MenuFlyoutPresenter
樣式,有關詳細信息,請參考以下代碼。
<Grid Background="Transparent" x:Name="rowGrid" >
<Grid.ContextFlyout >
<MenuFlyout x:Name="GridMenuFlyout" >
<MenuFlyoutItem Text="Reset"/>
<MenuFlyoutSeparator/>
<ToggleMenuFlyoutItem Text="Repeat"/>
<ToggleMenuFlyoutItem Text="Shuffle"/>
</MenuFlyout>
</Grid.ContextFlyout>
<Grid.Resources>
<Style TargetType="MenuFlyoutPresenter" x:Key="MenuFlyoutPresenterShowItem">
<Setter Property="Visibility" Value="Visible"/>
</Style>
<Style TargetType="MenuFlyoutPresenter" x:Key="MenuFlyoutPresenterHideItem">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</Grid.Resources>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="TouchGroup">
<VisualState x:Name="Touch">
<VisualState.Setters>
<Setter Target="GridMenuFlyout.MenuFlyoutPresenterStyle" Value="{ThemeResource MenuFlyoutPresenterShowItem}"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="NoTouch">
<VisualState.Setters>
<Setter Target="GridMenuFlyout.MenuFlyoutPresenterStyle" Value="{ThemeResource MenuFlyoutPresenterHideItem}"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.