【问题标题】:Windows store xaml and c# how to create accordian style listwindows store xaml和c#如何创建手风琴样式列表
【发布时间】:2013-04-10 15:01:45
【问题描述】:

我有一个 ListView IsGroupedSource 在它的 CollectionViewSource 中设置为 true。我正在尝试在单击组标题时切换组的可见性。

<CollectionViewSource
        x:Name="FiltersViewSource"
        Source="{Binding Filters}"
        IsSourceGrouped="true"
        ItemsPath="AttributeValues"
        />

<ListView
                    x:Name="filtersListView"
                    AutomationProperties.AutomationId="ItemListView"
                    AutomationProperties.Name="Grouped Items"                      
                    Grid.Row="1"
                    Margin="0,-10,0,0"
                    Padding="30"
                    ItemsSource="{Binding Source={StaticResource FiltersViewSource}}"
                    SelectionMode="None"
                    IsSwipeEnabled="false"
                    IsItemClickEnabled="True"
                    ItemClick="ItemView_ItemClick">
                    <ListView.GroupStyle>
                        <GroupStyle>
                            <GroupStyle.HeaderTemplate>
                                <DataTemplate>
                                    <Grid Margin="7,7,0,0">
                                        <Button AutomationProperties.Name="Group Title"
                                            Click="Header_Click"
                                            Style="{StaticResource TextPrimaryButtonStyle}">
                                            <StackPanel Orientation="Horizontal">
                                                <TextBlock Text="{Binding Name}" Foreground="White" FontSize="35" Margin="3,-7,10,10" Style="{StaticResource GroupHeaderTextStyle}" />
                                                <TextBlock Text="{StaticResource ChevronGlyph}" Foreground="White" HorizontalAlignment="Right" FontFamily="Segoe UI Symbol" Margin="0,-7,0,10" Style="{StaticResource GroupHeaderTextStyle}"/>
                                            </StackPanel>
                                        </Button>
                                    </Grid>
                                </DataTemplate>
                            </GroupStyle.HeaderTemplate>
                            <GroupStyle.Panel>
                                <ItemsPanelTemplate>
                                    <VariableSizedWrapGrid Orientation="Vertical" Margin="0,0,0,0"/>
                                </ItemsPanelTemplate>
                            </GroupStyle.Panel>
                        </GroupStyle>
                    </ListView.GroupStyle>
                    <ListView.ItemTemplate>
                        <DataTemplate >
                                <StackPanel  Visibility="{Binding Visibility}" Orientation="Horizontal">
                                    <CheckBox Margin="0,0,20,0"/>
                                    <TextBlock Text="{Binding Name}" Style="{StaticResource ItemTextStyle}" Foreground="White" FontSize="20" MaxHeight="40"/>
                                    <TextBlock Text="(40)" Style="{StaticResource ItemTextStyle}" Foreground="White" FontSize="25" MaxHeight="40"/>
                                </StackPanel>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>

基本上我正在尝试创建一个手风琴样式列表。我尝试添加。

<VariableSizedWrapGrid Visibility="{Binding Visibility}" Orientation="Vertical" Margin="0,0,0,0"/>

可见性是基础组对象中可见性类型的属性。

但它不起作用。

有没有办法做到这一点?

【问题讨论】:

  • 你可以发布代码隐藏吗?

标签: c# xaml windows-8 windows-runtime winrt-xaml


【解决方案1】:

您可以尝试将 Header Button 的 Command 属性绑定到一个视图模型命令,该命令会更改您将绑定到 VariableSizedWrapGrid 的组视图模型 Visibility 属性。

【讨论】:

  • 我想尝试一下,但我很难理解你的意思。能否请您详细解释一下。
  • 如果我理解你所说的正确,我已经尝试过了。
  • 我自己试过了,似乎组面板的 DataContext 不是组本身,而是一些通用的 DependencyObject 实例。基于此,我认为您要么需要创建一些自定义行为来遍历可视化树以找到正确的面板并翻转其可见性,要么停止使用 GridView 的分组功能,而是使用一个水平滚动的 ListView ,其中每个项目都是GridView 绑定到一个组。
  • 谢谢您我尝试了您的第二个解决方案“水平滚动的 ListView,其中每个项目都是绑定到组的 GridView”,并且效果很好。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-08-03
  • 2017-06-21
  • 1970-01-01
  • 2016-03-28
  • 2014-07-31
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多