Я боролся с управлением SplitView
, пытаясь создать образец (и простой!) UW App. Первый список вопросов, а затем код:UWP: проблемы с SplitView с VisualStateManager
- Я использую
VisualStateManager
контролироватьDisplayState
иPane
видимость. Поэтому я не использую соответствующие атрибуты (DisplayMode
иIsPaneOpen
) в XAML.
Вопросы, относящиеся:
a.иногда художник-дизайнерException from HRESULT: 0x88000FA8
б. Панель всегда находится вClosed
Состояние - в Дизайнере и в Runtime.
c. Я также получаю исключение во время выполнения, показываяDebugger
код, но после перезапуска Visual Studio он остановлен. - Если я добавлю два атрибута в разметке XAML (комментируя
VisualStateManager
), то для следующей комбинации кнопкаHamburger
не работает:IsPaneOpen="False" DisplayMode="Overlay"
. Код для кнопкиHamburger
ясно ваниль -MainSplitView.IsPaneOpen = !MainSplitView.IsPaneOpen;
Markup:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="721" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MainSplitView.DisplayMode" Value="Inline" />
<Setter Target="MainSplitView.IsPaneOpen" Value="True" />
</VisualState.Setters>
</VisualState>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="548" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MainSplitView.DisplayMode" Value="CompactOverlay" />
<Setter Target="MainSplitView.IsPaneOpen" Value="True" />
</VisualState.Setters>
</VisualState>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MainSplitView.DisplayMode" Value="Overlay" />
<Setter Target="MainSplitView.IsPaneOpen" Value="False" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<RelativePanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Button Name="HamBurgerButton" Background="Transparent" Padding="0,-6" Margin="12" Click="HamBurgerButton_Click">
<FontIcon FontFamily="{ThemeResource ContentControlThemeFontFamily}"
Glyph="≡" FontSize="32" Margin="0,-8,0,0"/>
</Button>
<TextBlock RelativePanel.RightOf="HamBurgerButton"
Style="{ThemeResource TitleTextBlockStyle}" Margin="5,0,0,0"
Text="Title"/>
<SplitView x:Name="MainSplitView" PaneBackground="{ThemeResource ApplicationPageBackgroundThemeBrush}"
RelativePanel.AlignLeftWithPanel="True" RelativePanel.AlignRightWithPanel="True"
RelativePanel.Below="HamBurgerButton" OpenPaneLength="200" CompactPaneLength="50">
<SplitView.Pane>
<StackPanel Orientation="Horizontal" Background="Gray">
<AppBarButton x:Name="AboutButton" Icon="Important" IsCompact="True" Click="AboutButton_Click"/>
<TextBlock Text="About"/>
</StackPanel>
</SplitView.Pane>
<SplitView.Content>
<ScrollViewer VerticalScrollBarVisibility="Auto" VerticalScrollMode="Auto"
HorizontalScrollBarVisibility="Disabled" HorizontalScrollMode="Disabled">
<Frame x:Name="ContentFrame"/>
</ScrollViewer>
</SplitView.Content>
</SplitView>
</RelativePanel>
Так может кто-либо подтвердить, что эти проблемы могут быть воспроизведены в их конце (т.е. они являются ошибки), или Я где-то ошибаюсь или есть обходные пути?
Да, этот код действительно работает, спасибо и отметим это как ответ. Но еще одна необъяснимая вещь заключается в том, что я загрузил образцы UWP из Github и запускал образец 'XAMLResponsiveTechniques'. У этого есть режим Overlay для 0-> 548, и он отлично работает! Как вы указываете, есть ли какой-либо свойство' z-index', который сделает панель Overlay на кадре? – NP3