2013-04-10 52 views
1

我有一個ListView IsGroupedSource在它的CollectionViewSource中設置爲true。我試圖在單擊組標題時切換組的可見性。Windows商店xaml和c#如何創建手風琴風格列表

<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"/> 

可見性是基礎組對象中可見性類型的屬性。

但它不起作用。

有沒有辦法做到這一點?

+1

你可以發佈代碼隱藏嗎? – Xyroid 2013-04-10 15:05:56

回答

0

您可以嘗試將Header Button的Command屬性綁定到視圖模型命令,該命令可以更改將綁定到VariableSizedWrapGrid的組視圖模型Visibility屬性。

+0

我想嘗試一下,但我很難理解你的意思。你能否詳細解釋一下。 – user2175596 2013-04-11 01:01:21

+0

如果我明白你說的正確,我已經試過了。 – user2175596 2013-04-11 18:38:04

+0

我只是自己試過,看起來組合面板的DataContext不是組本身,而是一些通用的DependencyObject實例。基於此,我認爲您需要創建一些自定義行爲,這些自定義行爲可以使可視樹遍歷以找到正確的面板並翻轉其可見性,或者停止使用GridView的分組功能,而是具有可水平滾動的ListView,其中每個項目是GridView綁定到一個組。 – 2013-04-11 21:33:20