Visual Studio系列教程:如何创建自适应布局(二)

本博客介绍在Visual Studio中使用XAML创建自适应布局的教程。包括在单个设备上适应多个窗口大小的方法,如添加窗口吸附点、创建VisualStates和StateTriggers、添加资源库等,最后运行应用并可进一步实验优化布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Visual Studio是一款完备的工具和服务,可帮助您为Microsoft平台和其他平台创建各种各样的应用程序,同时还可以将您所有的项目、团队和利益干系人联系在一起。

本教程将为你介绍在Visual Studio中如何使用XAML创建自适应布局,利用这一知识,我们可以创建外观适用于任何设备的应用。在本教程中,我们将学习到如何创建新的DataTemplate添加窗口吸附点,以及使用 VisualStateManager 和 AdaptiveTrigger 元素定制应用的布局

第3部分:在单个设备上适应多个窗口大小

创建新定制布局可解决移动设备响应式设计的难题,但是台式机和平板电脑的情况又是怎样的呢?

该应用在全屏中可能看起来很美观,但如果用户收缩窗口,则最终可能会出现难看的界面。通过使用 VisualStateManager 在单个设备上适应多个窗口大小,我们可以确保最终用户体验始终感觉良好。

添加窗口吸附点

第一步是定义触发不同 VisualStates 所在的“吸附点”。 从解决方案资源管理器中打开 App.xaml,并在 Application 标记之间添加以下代码。

<Application.Resources>
    <!--  window width adaptive snap points  -->
    <x:Double x:Key="MinWindowSnapPoint">0</x:Double>
    <x:Double x:Key="MediumWindowSnapPoint">641</x:Double>
    <x:Double x:Key="LargeWindowSnapPoint">1008</x:Double>
</Application.Resources>

这会为我们提供三个吸附点,利用这些吸附点,我们可以为三个窗口大小范围创建新的 VisualStates:

  • 小(宽度为 0 - 640 像素)
  • 中等(宽度为 641 - 1007 像素)
  • 大(宽度大于 1007 像素)
创建新的 VisualStates 和 StateTriggers

接下来,我们将创建与每个吸附点相对应的 VisualStates 和 StateTriggers。 在 MainPage.xaml 中,将以下代码添加到在第 2 部分创建的 VisualStateManager 中。

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup>
    ...

        <!-- Large window VisualState -->
        <VisualState x:Key="LargeWindow">

            <!-- Large window trigger -->
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="{StaticResource LargeWindowSnapPoint}"/>
            </VisualState.StateTriggers>
     
        </VisualState>

        <!-- Medium window VisualState -->
        <VisualState x:Key="MediumWindow">

            <!-- Medium window trigger -->
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="{StaticResource MediumWindowSnapPoint}"/>
            </VisualState.StateTriggers>
        
        </VisualState>

        <!-- Small window VisualState -->
        <VisualState x:Key="SmallWindow">

            <!-- Small window trigger -->
            <VisualState.StateTriggers >
                <AdaptiveTrigger MinWindowWidth="{StaticResource MinWindowSnapPoint}"/>
            </VisualState.StateTriggers>

        </VisualState>

    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

添加资源库

最后,将这些资源库添加至 SmallWindow 状态。

<VisualState x:Key="SmallWindow">
    ...
    <!-- Small window setters -->
    <VisualState.Setters>
        <!-- Apply mobile itemtemplate and styles -->
        <Setter Target="ImageGridView.ItemTemplate"
                Value="{StaticResource ImageGridView_MobileItemTemplate}" />
        <Setter Target="ImageGridView.ItemContainerStyle"
                Value="{StaticResource ImageGridView_MobileItemContainerStyle}" />
        <!-- Adjust the zoom slider to fit small windows-->
        <Setter Target="ZoomSlider.Minimum"
                Value="80" />
        <Setter Target="ZoomSlider.Maximum"
                Value="180" />
        <Setter Target="ZoomSlider.TickFrequency"
                Value="20" />
        <Setter Target="ZoomSlider.Value"
                Value="100" />
    </VisualState.Setters>
</VisualState>

每当视区的宽度小于 641 像素时,这些资源库就会将移动版 DataTemplate 和样式应用于桌面应用。 它们还会调整缩放滑块以更好地适应小屏幕。

运行应用

在 Visual Studio 工具栏中,将目标设备设置为本地计算机,并运行该应用。 加载该应用时,请尝试更改窗口的大小。 当你将窗口缩小为小尺寸时,应该会看到应用切换为你在第 2 部分中创建的移动布局。

现在,你已完成本实验,并且拥有足够的自适应布局知识,可以自行进行进一步的实验。可以尝试向你之前添加的仅限于移动版的工具提示添加评级控件。 或者,作为一项较大的挑战,尝试一下为较大的屏幕大小优化布局(考虑电视屏幕或 Surface Studio)。

如果你想了解Visual Studio其他相关教程或下载最新试用版,请点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值