所以,我刚刚开始使用 Windows应用程序,有一些我无法按照自己的意愿工作(可能是因为我找不到任何样本,而且Channel9视频没有覆盖我的情况).

从this article开始,我决定“重新定位”技术是适合我的应用程序从大屏幕移动到较小屏幕的技术.

我所做的是使用StackPanel并使用两个AdaptiveTriggers改变其方向(一个用于0宽度,另一个用于720,基于表here).

这种方法有效,但我会用一些丑陋的油漆编辑的截图来说明一些问题.

这就是当我处于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,5"/>
                    </Style>
                </ListView.ItemContainerStyle>
            </ListView>
        </StackPanel>
    </Grid>
</Page>

请注意,如果没有StackPanel,绿色部分将适合页面,覆盖所有可用区域.不幸的是,我无法找到更好的解决方案,因为没有样本告诉我们应该如何实现这种技术.我也尝试使用新的RelativePanel,但似乎AdaptiveTrigger的Setter不能与RelativePanel.RightOf这样的附加属性一起使用.

是否有人成功应用这种技术而不必使用代码隐藏?

编辑:

我使用一个包含2行和2列的Grid工作,使用AdaptiveTrigger将所有内容从行移动到列,反之亦然.

可以通过setter更改RelativePanel附加属性值.语法如下:
<Setter Target="SomeXAMLObject.(RelativePanel.RightOf)" Value="SomeOtherXAMLObject" />

xaml – Windows通用响应式设计重新定位的更多相关文章

  1. android – 如何在材料设计中的工具栏上添加搜索按钮

    我试图在弹出的设置左侧添加搜索按钮,但我无法添加工具栏.这是我的menu.xml代码:这是我的toolbar.xml:我正在获取工具栏但没有获得搜索按钮?

  2. android – 为标记片段找到意外的名称空间前缀“xmlns”为标记片段找到的意外名称空间前缀“map”

    为标记片段找到的意外名称空间前缀“xmlns”的原因为标记片段找到了意外的命名空间前缀“map”?

  3. 当XAML数据验证失败时,如何让视图模型知道

    我有一个表单,用户可以在其中设置数值过程的参数。尽管该属性是双精度的,但它可能表示布尔值或整数。我不能让Min>;Max或Max<;Min.我已经在XAML中实现了验证,如果数据无效,它会向用户发出视觉警告。Min参数的数据模板如下所示。我希望在参数对象中有一个布尔IsValid属性,以便在用户尝试保存时进行测试。如何从XAML绑定到此IsValid属性?

  4. ScrollViewer中的WebView带有XAML元素头

    在WebView中,我使用WP8.1加载HTML元素.每当内容超出WebView高度时,滚动都没有问题.我的问题是我在WebView的顶部有XAML元素,它们必须与WebView滚动一起滚动.源代码:每当WebView元素“msgContent”滚动时,我都希望stackpanel“xamlelement”与WebView一起滚动.这里的问题是我们可以通过这2个步骤禁用webview滚动1)设置过度隐藏到加载到webview的html内容2)将webview的高度设置为等于其中加载的html内容.但是当我

  5. wpf – 使用Microsoft(或其他)功能区与大型项目和MVVM

    我们是否应该有一个RibbonView和一个Ribbonviewmodel,它将包含功能区中的所有可能项目,每个团队都会将其项目添加到这些V/VM,并定义何时显示它们的逻辑?或者我们是否允许每个视图,视图模型或模块在服务中注册功能区项目,然后让服务在活动视图随注册到该类型的所有项目更改时根据需要呈现功能区?或者有没有更好的方法来实现这种集成?您是否对如何管理多个开发人员常见的单个功能区资源有更好的想法或意见?

  6. xaml – Windows通用响应式设计重新定位

    编辑:我使用一个包含2行和2列的Grid工作,使用AdaptiveTrigger将所有内容从行移动到列,反之亦然.可以通过setter更改RelativePanel附加属性值.语法如下:

  7. 在哪里可以找到Microsoft docx格式的架构(.xsd文件)

    考虑一个需要docx文档文本而没有用于在R中处理的页眉和页脚的用户.如果将file.docx重命名为file.zip并分析文档document.xml,那么它就是一个包含文本的格式良好的XML文档.Microsfot是否在docx文件的ZIP包中发布了此document.xml子文件的架构?

  8. UWP(Windows 10)XAML中的WebBrowser控件

    你能告诉我如何在Windows10XAML中提供浏览器控件吗?

  9. windows-8 – 最小的Windows 8 C XAML应用程序?

    好吧,我可以从C#告诉你,文件夹结构应该与C类似.>必需:属性–>保存装配信息.>必需:参考–>为地铁和航空公司提供必要的框架..净.>可选?:普通–>持有标准XAML样式.我想如果你不需要使用它们,你可以删除它们.>必需:App.xaml–>处理启动和管理W8应用程序.如果您在C项目中可以看到任何这些文件,请告诉我.

  10. xaml – 将StackPanel背景设置为WP7选择的重音(主题)颜色

    我想知道是否可以将StackPanel的背景设置为WindowsPhone7用户选择的重音(主题)颜色.我听说你应该使用样式,因此它可以用于当前xaml页面上的所有StackPanels.但是我有点失落.我当前静态背景颜色的示例:我在这里先向您的帮助表示感谢.PS:万一有人想知道十六进制值“#FF1BA1E2”是默认WP7蓝色重音(主题)的颜色.使用内置的静态资源自动获取主题颜色:

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部