C# 如何在分组列表视图中使用不同的面板?
我需要为ListView中的特定部分/组使用不同的面板。如何使用XAML、C或任何东西来实现这一点?我已经试过使用GroupedStyleSelector,但是没有用,我研究过,但结果证明它不是为这个目的设计的。这是我现在的XAML:C# 如何在分组列表视图中使用不同的面板?,c#,xaml,uwp,C#,Xaml,Uwp,我需要为ListView中的特定部分/组使用不同的面板。如何使用XAML、C或任何东西来实现这一点?我已经试过使用GroupedStyleSelector,但是没有用,我研究过,但结果证明它不是为这个目的设计的。这是我现在的XAML: <ListView ItemsSource="{Binding Source={StaticResource cvs}}"> <ListView.GroupStyle> <GroupStyle HidesIfE
<ListView ItemsSource="{Binding Source={StaticResource cvs}}">
<ListView.GroupStyle>
<GroupStyle HidesIfEmpty="True">
<GroupStyle.Panel>
<ItemsPanelTemplate>
// I want to change this for a particular group
<uwp:SGStaggeredPanel/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
我正在考虑将面板子类化,但问题是如何获得对当前组的引用
上面的文章讨论了一个WCT goody,它允许您动态更改即将呈现的项目的Tamplate,这个特定的示例是一个静态表示的扩展,它只是作为listview的附加属性工作,并循环使用两个不同的模板
但是,您可以轻松地将ListView扩展到模板控件中,然后更轻松地访问包含Itemsource的Viewmodel,从那时起,您可以继续更改
private static void ItemTemplateContainerContentChanging(Windows.UI.Xaml.Controls.ListViewBase sender, ContainerContentChangingEventArgs args)
这就是所有魔法发生的地方
实现符号
注0:
如果您不了解mvvm和绑定,请忘记您曾经阅读过这篇文章,转而去研究它
注1:
所有没有明确定义数据上下文的子控件都将继承其父控件
注2:
通过跟踪传入的args.ItemIndex,然后与底层datacontext中的绑定源可观察列表等交叉检查,您将能够在上述函数中映射传入控件
注3:
要将其转换为tamplated/custom控件,您几乎必须自己实现ListView,如MyListview:ListView
依赖属性必须转换为常规属性,
只需键入“propdp”并双击Tab,即可调出默认的tamplate
您仍然需要引用XAML中的所有不同数据标签,如下面列出的showcase应用程序中所示
注4:
减少showcase代码、拉伸方向和斑马条纹等在您的案例中不需要的松弛
这就是我提到的代码片段的确切位置,要在实际操作中检查并使用它,请从商店下载“Windows社区工具包”,它位于扩展部分