如何使 Metro GridView 中的组使用不同的布局?

2024-02-01

我正在编写一个 Windows 8 Metro 应用程序。我正在尝试绘制一个包含三个组的 GridView。我希望其中一组的项目布局与其他组不同。我以前在 WPF 中使用过选择器,所以我认为这是一个很好的途径。所以我尝试了 GroupStyleSelector 并发现了这个MSDN 上的示例 http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh780627.aspx:

public class ListGroupStyleSelector : GroupStyleSelector
{
  protected override GroupStyle SelectGroupStyleCore(object group, uint level)
  {
    return (GroupStyle)App.Current.Resources["listViewGroupStyle"];
  }
}

所以我根据适合我的内容对其进行了更改/扩展:

CS:

public class ExampleListGroupStyleSelector : GroupStyleSelector
{
  public ExampleListGroupStyleSelector ()
  {
     OneBigItemGroupStyle = null;
     NormalGroupStyle = null;
  }

  public GroupStyle OneBigItemGroupStyle { get; set; }
  public GroupStyle NormalGroupStyle { get; set; }

  protected override GroupStyle SelectGroupStyleCore( object group, uint level )
  {
     // a method that tries to grab an enum off the bound data object
     var exampleListType= GetExampleListType( group );

     if ( exampleListType== ExampleListType.A)
     {
        return OneBigItemGroupStyle;
     }
     if ( exampleListType== ExampleListType.B|| exampleListType== ExampleListType.B)
     {
        return NormalGroupStyle;
     }

     throw new ArgumentException( "Unexpected group type" );
  }
}

XAML:

<Page.Resources>
  <ExampleListGroupStyleSelector 
     x:Key="ExampleListGroupStyleSelector"
     OneBigItemGroupStyle="{StaticResource OneBigGroupStyle}"
     NormalGroupStyle="{StaticResource NormalGroupStyle}" />
</Page.Resources>
<GridView
     ItemsSource="{Binding Source={StaticResource exampleListsViewSource}}"
     GroupStyleSelector="{StaticResource ExampleListGroupStyleSelector}">
     <GridView.ItemsPanel>
        <ItemsPanelTemplate>
           <VirtualizingStackPanel
              Orientation="Horizontal" />
        </ItemsPanelTemplate>
     </GridView.ItemsPanel>
</GridView>

但是我在选择器中给出的组是 null 或 DependencyObject,我似乎无法获取任何数据。如果没有给我任何信息,我该如何做出关于如何更改 GroupStyle 的明智决定。有没有办法可以通过附加属性或类似的方式传递属性?


基于本论坛thread http://social.msdn.microsoft.com/Forums/hr/winappswithcsharp/thread/5f12273f-e000-4c96-a4bc-6ccc18a104a0?prof=required您可以通过将对象转换为 ICollectionView 并访问 .Group 属性来提取该对象,您将在其中获取将组绑定到的对象。这允许对模板进行智能决策。然而,它仍然对我(或线程中的其他人)不起作用,因为尽管返回了不同的样式,但只应用了一种样式。

编辑:事实证明 GroupTemplate 并不旨在生成不同的组。其目的是更改组的视图,例如在快照视图或所有组都发生更改的类似情况下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 Metro GridView 中的组使用不同的布局? 的相关文章

  • 将集合绑定到自定义控件属性

    我没有运气尝试将数据集合绑定到我的自定义控件的属性 我已经实现了该控件的字符串属性的机制 在此处提供了一些帮助 并期望集合类型同样简单 但是我无法让它再次工作 这是我的自定义控件视图
  • 尚未注册类型“IServiceProviderFactory[Autofac.ContainerBuilder]”的服务

    当运行以下命令添加数据库迁移脚本时 出现以下错误 dotnet ef migrations add InitialCreate v o Migrations context MyContext 访问 Microsoft Extensions
  • 如何在 DataColumn.Expression 中使用 IF/ELSE 或 CASE?

    我有一个包含 1 列的表 状态 我想添加另一列名为 Action 的列 其值如下 如果 Status Yes 则 Action Go 否则 Action Stop 我使用以下代码添加到 操作 列中 但它不起作用 myDataTable Co
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • 如何保证对象只有一个线程

    我有以下代码 class Service public void start creates thread which creates window and goes to message loop void stop sends WM C
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • 类的成员复制

    在学习 复制成员 概念时 书中给出了如下说法 此外 如果非静态成员是引用 const 或没有复制赋值的用户定义类型 则无法生成默认赋值 我不太明白这个声明到底想传达什么 或者说这个说法指的是哪一种场景 谢谢 该语句与编译器自动为您编写的类
  • std::forward_as_tuple 将参数传递给 2 个构造函数

    我想传递多个参数以便在函数内构造两个对象 以同样的方式std pair
  • 运行选定的代码生成器时出错:“未将对象引用设置到对象的实例。”错误?

    我已经尝试了所有解决方案 例如修复 VS 2013 但没有用 当您通过右键单击控制器文件夹来创建控制器并添加控制器时 然后右键单击新创建的控制器的操作并选择添加视图 当我尝试创建视图时 就会发生这种情况 它不是一个新项目 而是一个现有项目
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 您是否将信息添加到每个 .hpp/.cpp 文件的顶部? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 创建新的 C 头文件 源文件时 您会在顶部添加哪些信息 例如 您是否添加日期 您的姓名 文件描述等 您是否使用结构化格式来存储此信息 e g F
  • 如何在 DropDownList 中保留空格 - ASP.net MVC Razor 视图

    我在视图中通过以下方式绑定我的模型 问题是我的项目文本是格式化文本 单词之间有空格 如下所示 123 First 234 00 123 AnotherItem 234 00 123 Second 234 00 我想保留此项目文本中的空格 即
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo

随机推荐

  • Android Studio:Gradle 构建失败 - 任务“:compileDebugAidl”执行失败

    在 Android Studio I O 预览 AI 130 677228 中更改源代码并使用 gradle 进行构建后 构建失败并出现以下错误 Gradle FAILURE Build failed with an exception W
  • 选择列表中的 HTML 复选框

    我正在尝试在选择列表中构建一个复选框列表 例如此处的国家 地区列表 链接文本 https careers microsoft com Search aspx 我正在使用 Asp net MVC 因此它需要是 pure html JavaSc
  • Elasticsearch:如何删除映射类型而不删除整个索引?

    是否可以从索引中删除单个映射类型而不删除整个索引 https www elastic co guide en elasticsearch reference current indices delete mapping html https
  • 如何使用 data-href 打开新选项卡

    我正在使表格行可单击 但单击后我想打开一个新选项卡 我尝试使用data target但这没有用 tr class table row tr 可以这样做 jQuery JSFiddle 1
  • 如何使用 Youtube API 为 Youtube 视频添加字幕?

    是否有可能添加字幕 to Youtube视频使用Google Youtube API v3 重要条件 视频不是所有者 任务 使用所选语言添加自定义字幕Google APIs Client Library for JavaScript Goo
  • Python MS Word [重复]

    这个问题在这里已经有答案了 可能的重复 在 Python 中读取 写入 MS Word 文件 https stackoverflow com questions 188444 reading writing ms word files in
  • NSString 的 Base64 编码 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • TCP 数据包“不分段”的好处?

    我们的一位客户在将数据从我们的应用程序 在他们的 PC 上 提交到服务器 不同的地理位置 时遇到问题 当发送低于 1100 字节的数据包时 一切正常 但在此之上 我们看到 TCP 每隔几秒重新传输一次数据包 但没有得到任何响应 我们用于测试
  • constexpr(即常量初始化)模板变量的初始化顺序是否有保证?

    From en cppreference com w cpp language initialization http en cppreference com w cpp language initialization 无序动态初始化 si
  • 如何在 Angular 2 中有条件地加载模块

    下面的代码可以根据不同的 Angular cli 环境变量有条件地加载模拟服务 然而 它有一个副作用 即模拟服务被内置到最终的转码和缩小的输出文件中 是否有更好的方法来完成Angular2中的延迟加载模块 应用程序模块 ts import
  • “关联表”(多对多关系)的正确名称是什么[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关联表 的正确或最流行的名称是什么 我听说过查找 关联 解析 映射和联结表 没有 正确 的名称 但学术名称将是 关联表 请参阅 维基百科文章关联
  • 使用 Ant 创建战争时 JSP 不会被复制

    我正在使用以下 Ant 脚本来创建一个简单的 Web 应用程序之战
  • 如何从 GradientDrawable 获取颜色

    首先 我将绿色设置为View mIcon的背景 View mIcon findViewById R id xxx GradientDrawable gdraw GradientDrawable mContext getResources g
  • TransactionScope Complete() 在退出 USING 语句之前不会提交事务

    我遇到了这种奇怪的行为 只有当using退出而不是调用时退出scope Complete using TransactionScope scope new TransactionScope TransactionScopeOption Re
  • 如何将 Tomcat 6 库管理到 %TOMCAT_HOME%/lib 下的子文件夹中?

    我使用 Tomcat 6 0 20 和 JDK 1 6 0 13 如何从子文件夹加载库 TOMCAT HOME lib 无需将 jar 从子文件夹中取出并直接放入 TOMCAT HOME lib 我想这样做的原因是因为许多应用程序将共享大量
  • jQuery 日期格式

    如何使用 jQuery 设置日期格式 我正在使用下面的代码但出现错误 txtDate val format date new Date dd M yy 请提出一个解决方案 在您的页面中添加 jquery ui 插件 txtDate val
  • 多种情况下的熊猫面膜

    在我的数据框中 我想用 nan 替换低于 1 和高于 5 的每个值 这段代码有效 persDf persDf mask persDf lt 1000 我得到了作为 nan 的所有值 但这个没有 persDf persDf mask pers
  • 模型上的自定义保存方法 - django

    我正在重写我的模型之一上的保存方法 def save self args kwargs self set coords super Post self save args kwargs def unicode self return sel
  • onDestroy 关闭应用程序后崩溃

    在重写 onDestroy 方法后 我遇到了一些问题 我的应用程序是一个音乐播放器 使用我需要的媒体播放器实例 如果没有播放音乐 则强制释放它 到目前为止 这是我的代码 为了实现这个技巧 我都重写了 onKeyDown 和 onDestro
  • 如何使 Metro GridView 中的组使用不同的布局?

    我正在编写一个 Windows 8 Metro 应用程序 我正在尝试绘制一个包含三个组的 GridView 我希望其中一组的项目布局与其他组不同 我以前在 WPF 中使用过选择器 所以我认为这是一个很好的途径 所以我尝试了 GroupSty