我有兩列Grid
一個SplitView
內部和StateTriggers
是假設把第二列到第一列的底部,並且當窗口的寬度收縮也改變SplitView
的DisplayMode
。但我不明白爲什麼它總是兩列,DisplayMode
也沒有改變。下面列出了xmal
文件。VisualState.StateTriggers不工作
<Page
x:Class="ExampleLayout.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ExampleLayout"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Loaded="Page_Loaded"
xmlns:data="using:ExampleLayout.Model"
mc:Ignorable="d">
<Grid Background="#4d4d4d">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="NarrowLayout">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MySplitView.DisplayMode" Value="Inline" />
<Setter Target="FirstItemsGridView.(Grid.Row)" Value="0" />
<Setter Target="FirstItemsGridView.(Grid.Column)" Value="0" />
<Setter Target="SecondItemsGridView.(Grid.Row)" Value="1" />
<Setter Target="SecondItemsGridView.(Grid.Column)" Value="0" />
<Setter Target="FirstItemsGridView.(Grid.ColumnSpan)" Value="2" />
<Setter Target="SecondItemsGridView.(Grid.ColumnSpan)" Value="2" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="WideLayout">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="400" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MySplitView.DisplayMode" Value="CompactOverlay" />
<Setter Target="FirstItemsGridView.(Grid.Row)" Value="0" />
<Setter Target="FirstItemsGridView.(Grid.Column)" Value="0" />
<Setter Target="SecondItemsGridView.(Grid.Row)" Value="0" />
<Setter Target="SecondItemsGridView.(Grid.Column)" Value="1" />
<Setter Target="FirstItemsGridView.(Grid.ColumnSpan)" Value="1" />
<Setter Target="SecondItemsGridView.(Grid.ColumnSpan)" Value="1" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<RelativePanel>
<Button Name="HamburgerButton"
RelativePanel.AlignLeftWithPanel="True"
FontFamily="Segoe MDL2 Assets"
Content=""
FontSize="24"
Width="45"
Height="45"
HorizontalAlignment="Center"
Foreground="White"
Click="HamburgerButton_Click"
/>
<TextBlock Name="TitleTextBlock"
RelativePanel.RightOf="HamburgerButton"
FontSize="18"
FontWeight="Bold"
Foreground="White"
Margin="20,10,0,0" />
</RelativePanel>
<SplitView Name="MySplitView"
Grid.Row="1"
DisplayMode="Inline"
OpenPaneLength="150"
CompactPaneLength="45">
<SplitView.Pane>
<ListBox SelectionMode="Single"
SelectionChanged="ListBox_SelectionChanged"
Background="#4d4d4d">
<ListBoxItem Name="Charts">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock
Text=""
FontFamily="Segoe UI"
Foreground="White"
FontWeight="SemiBold"
Margin="0,-7,0,0"
FontSize="26" />
<TextBlock Text="Settings"
FontSize="20"
Foreground="White"
Margin="20,0,0,0" />
</StackPanel>
</ListBoxItem>
<ListBoxItem Name="Settings">
<StackPanel Orientation="Horizontal">
<TextBlock
Text=""
FontFamily="Segoe MDL2 Assets"
Foreground="White"
FontWeight="SemiBold"
FontSize="20"
Margin="0,3,0,0"/>
<TextBlock Text="Settings"
FontSize="20"
Foreground="White"
Margin="20,0,0,0" />
</StackPanel>
</ListBoxItem>
</ListBox>
</SplitView.Pane>
<SplitView.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<GridView Name="FirstItemsGridView"
Grid.Column="0"
Background="#333333"
ItemsSource="{x:Bind FirstItems}"
HorizontalAlignment="Stretch"
Margin="5">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:ExampleLayoutItem">
<local:FirstSymbolControl />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView Name="SecondItemsGridView"
Grid.Column="1"
Background="#333333"
ItemsSource="{x:Bind SecondItems}"
HorizontalAlignment="Stretch"
Margin="5">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:ExampleLayoutItem">
<local:SecondSymbolControl />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>
</SplitView.Content>
</SplitView>
</Grid>
在本地計算機上,默認情況下,UWP應用程序的最小窗口寬度爲500,因此400對於「WideLayout」可能不是很好的值,這可能是VisualState.StateTriggers不起作用的原因。你可以嘗試將'MinWindowWidth'設置爲'600',就像@Michal Kania說的那樣,然後你的代碼應該可以工作。 –