在VisualState状态里更改Grid的列宽之类的
Win10的UWP有个StateTriggers ,挺不错,但是我还希望有一个方式,能更改Grid的列宽行高之类的东西,比如我之前用的http://l4ljl.codeplex.com/SourceControl/latest#RichMan4LUni/Pages/MainPage.xaml ,里面会根据我是不是横屏而转换显示的样式,现在没设备截不了图只好干说了。
这个东西~本来以为可以用Blend直接设计器里点的~发现得自己改两行代码。
第一步是需要给Grid的列之类的命个名,就像这样
1 <Grid.ColumnDefinitions> 2 <ColumnDefinition x:Name="Col1"/> 3 <ColumnDefinition x:Name="Col2" Width="2*"/> 4 <ColumnDefinition x:Name="Col3"/> 5 </Grid.ColumnDefinitions> 6 <Grid.RowDefinitions> 7 <RowDefinition Height="15*"/> 8 <RowDefinition Height="Auto"/> 9 <RowDefinition Height="10*"/> 10 <RowDefinition Height="Auto"/> 11 <RowDefinition Height="5*"/> 12 <RowDefinition Height="Auto"/> 13 <RowDefinition Height="5*"/> 14 <RowDefinition Height="Auto"/> 15 <RowDefinition x:Name="Row" Height="20*"/> 16 </Grid.RowDefinitions>
给需要变换的行或者列附一个名字。
第二步是在VisualState 里面加Setter 。
1 <VisualState x:Name="Wide"> 2 <VisualState.Setters> 3 <Setter Target="Col1.Width" Value="5*"/> 4 <Setter Target="Col2.Width" Value="2*"/> 5 <Setter Target="Col3.Width" Value="1.5*"/> 6 <Setter Target="Row.Height" Value="15*"/> 7 <Setter Target="Title.(Grid.ColumnSpan)" Value="1"/> 8 </VisualState.Setters> 9 <VisualState.StateTriggers> 10 <AdaptiveTrigger MinWindowWidth="640" MinWindowHeight="360"/> 11 </VisualState.StateTriggers> 12 13 </VisualState>
就这样写就可以,刚写好的时候会有下划线各种报错,不用管编译一下就好了。