[UWP]使用AdaptiveTrigger实现自适应布局

简介: 原文:[UWP]使用AdaptiveTrigger实现自适应布局这篇博客将介绍如何在UWP开发中使用AdaptiveTrigger实现自适应布局。 场景1:窗体宽度大于800时,窗体背景色为绿色,窗体在0到800之间为蓝色。
原文: [UWP]使用AdaptiveTrigger实现自适应布局

这篇博客将介绍如何在UWP开发中使用AdaptiveTrigger实现自适应布局。

场景1:窗体宽度大于800时,窗体背景色为绿色,窗体在0到800之间为蓝色。

XAML Code:

<Grid x:Name="LayoutRoot" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="WindowStates">
            <!--Windows's size >= 800, background green-->
            <VisualState x:Name="WideState">
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="800" />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="LayoutRoot.Background" Value="Green" />
                </VisualState.Setters>
            </VisualState>
            <!--Windows's size >0 and < 800, background blue-->
            <VisualState x:Name="NarrowState">
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="0" />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="LayoutRoot.Background" Value="Blue" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
</Grid>

在VisualStateGroup中有两组VisualState对Grid的背景色进行了设置。

场景2:一个窗体上面有一个TextBlock,TextBox,Button。当窗体宽度合适时,这三个控件水平排放;缩小窗体后,垂直排放。

XAML Code:

<Grid x:Name="LayoutRoot" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <RelativePanel HorizontalAlignment="Stretch">
        <TextBlock x:Name="MyTextBlock" Text="TextBlock" Margin="5,10"/>

        <TextBox x:Name="MyTextBox" Text="TextBox" Width="200" Margin="5,10"/>

        <Button x:Name="MyButton" Content="Button" Margin="5,10" Width="200" />
    </RelativePanel>
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="WindowState">
            <VisualState x:Name="WideState">
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="600" />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="MyTextBox.(RelativePanel.RightOf)" Value="MyTextBlock" />
                    <Setter Target="MyButton.(RelativePanel.RightOf)" Value="MyTextBox" />
                </VisualState.Setters>
            </VisualState>
            
            <VisualState x:Name="NarrowState">
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="0" />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="MyTextBox.(RelativePanel.Below)" Value="MyTextBlock" />
                    <Setter Target="MyTextBox.(RelativePanel.AlignLeftWith)" Value="MyTextBlock" />
                    <Setter Target="MyButton.(RelativePanel.Below)" Value="MyTextBox" />
                    <Setter Target="MyButton.(RelativePanel.AlignLeftWith)" Value="MyTextBlock" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
</Grid>

VisualState.Setter的Target中RalativePanel的内容都用括号圈起来了是因为这些都是附加属性。这里同时引入了一个UWP支持的布局控件RelativePanel,关于RelativePanel布局,

可以参考:https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.relativepanel.aspx

目录
相关文章
|
8月前
|
前端开发 C# 容器
WPF技术之控件布局
WPF提供了多种布局控件和技术,可以帮助开发人员轻松创建灵活的用户界面。
101 0
WPF技术之控件布局
|
8月前
|
C#
WPF-布局样式练习-Day01
WPF-布局样式练习-Day01
71 0
|
前端开发 C# UED
WPF自定义控件02:字体图标支持
最近几年,多数应用都在采用一种矢量图图标,且它作为一种字体,可以非常方便进行整合,当使用某个图标时,只需要通过文本进行制定具体的图标编码即可使用,这里比较熟知的有Font Awesome。它给我们提供了一套可缩放的矢量图标字体,它可以被指定大小、颜色、阴影以及任何可以用CSS进行定义的样式。
804 0
WPF自定义控件02:字体图标支持
|
C#
WPF 的毛玻璃效果
原文:WPF 的毛玻璃效果 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/koloumi/article/details/76917519 ...
1989 0
|
Android开发 iOS开发
Xamarin自定义布局系列——瀑布流布局
原文:Xamarin自定义布局系列——瀑布流布局 Xamarin.Forms以Xamarin.Android和Xamarin.iOS等为基础,自己实现了一整套比较完整的UI框架,包含了绝大多数常用的控件,如下图 虽然XF(Xamarin.Forms简称XF,下同)为我们提供大这么多的控件,但在实际使用中,会发现这些控件的可定制性特别差,基本上都需要里利用Renderer来做一些修改。
1092 0
|
C#
WPF 关于圆角的制作
原文:WPF 关于圆角的制作 1、使用Boder(一般情况): 设置CornerRadius属性   ...   2、创建ClippingBorder类: View Code using System; using System.
1318 0
|
C# 数据格式 XML
wpf之自定义滚动条
原文:wpf之自定义滚动条 首先我们添加一个带滚动条的textbox控件: 这里 VerticalScrollBarVisibility="Auto"表示是超出垂直距离自动显示滚动条,当然这个滚动条是win系统自带的效果,我们要修改的就是这部分,需要对滚动区域的模板进行自定义修改。
1590 0
|
C# Windows
WPF实现抽屉效果
原文:WPF实现抽屉效果 界面代码(xaml): ...
1487 0
|
C# Android开发
Wpf 抽屉效果
原文:Wpf 抽屉效果 在android开发中有抽屉效果,就是在页面的边上有一个按钮,可以通过点击或者拖拽这个按钮,让页面显示。Wpf也可以实现相同的效果。   主要是通过一个DoubleAnimation和RectAnimation动画实现 ...
1380 0
|
C#
[WPF] VisualBrush 中的布局
原文:[WPF] VisualBrush 中的布局 今天插一篇随笔。说一说上周五遇到的一个布局问题,问题大概是这样的:需要在一个快区域上添加一张透明的背景图片,由于区域较大、并且宽高都不是固定大小,图片较小 所以图片需要居中显示。
920 0