Ste*_*TNT 8 xaml win-universal-app windows-10 windows-10-mobile
所以,我刚刚开始使用Windows应用程序,有一些我无法按照自己的意愿工作(可能是因为我找不到任何样本,而且Channel9视频没有覆盖我的情况).
从这篇文章开始,我决定"重新定位"技术是适合我的app从大屏幕移动到较小屏幕的技术.
我所做的是使用a StackPanel并使用两个AdaptiveTriggers 改变其方向(一个用于0宽度,另一个用于720,基于此处的表格).
这种方式有效,但我会用一些丑陋的油漆编辑截图来说明一些问题.
这就是当我处于这种BigScreen情况时会发生的情况,那里有足够的空间让A和B同时在同一行上.这里的问题是B应该占据剩余的全部宽度,覆盖所有蓝色部分.

第二个问题与调整大小有关.当没有足够的空间时,绿色部分会被切割而不是调整大小(您可以看到右侧边框消失).在使用StackPanel布局响应之前没有发生这种情况.

最后,当我们处于这种SmallScreen情况时,方向变为垂直方向,我们遇到与第一个相同的问题:绿色部分的高度不会填满屏幕.

这是XAML用于页面的:
<Page
x:Class="Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WifiAnalyzerFinal.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mvvm="using:Mvvm"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="SmallScreen">
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StackPanel.Orientation"
Value="Vertical"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="BigScreen">
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="720"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StackPanel.Orientation"
Value="Horizontal"/>
<Setter Target="Rect.Width"
Value="200"/>
<Setter Target="Rect.Height"
Value="Auto"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<StackPanel Orientation="Vertical"
Background="Blue"
x:Name="StackPanel">
<Rectangle Fill="Red"
Height="50"
x:Name="Rect"
Width="Auto"/>
<ListView ItemsSource="{Binding Stuff}"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Green"
Width="Auto"
BorderBrush="DarkGreen"
BorderThickness="5"
Padding="5">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Margin" Value="0,0,0,5"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</StackPanel>
</Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)
请注意,如果没有StackPanel绿色部分适合页面,应覆盖所有可用区域.不幸的是,我无法想出一个更好的解决方案,因为没有样本告诉我们应该如何实现这种技术.我使用新也尝试RelativePanel,但它似乎AdaptiveTrigger的Setter不喜欢附加属性的工作RelativePanel.RightOf.
是否有人成功应用这种技术而不必使用代码隐藏?
编辑:
我使用Grid2行和2列的工作,AdaptiveTrigger将所有内容从行移动到列,反之亦然.
可以通过设置器更改RelativePanel 附加属性值。语法如下:
<Setter Target="SomeXAMLObject.(RelativePanel.RightOf)" Value="SomeOtherXAMLObject" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
970 次 |
| 最近记录: |