2012-04-16 52 views
3

我有一羣風格的ListBox:如何使的CollectionView分組方面的數據模板設置

<GroupStyle HidesIfEmpty="True" x:Key="GroupStyle"> 
      <GroupStyle.ContainerStyle> 
       <Style TargetType="{x:Type GroupItem}"> 
        <Setter Property="Margin" Value="0,0,0,5"/> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="{x:Type GroupItem}"> 
           <Expander IsExpanded="True" BorderBrush="#FFA4B97F" BorderThickness="0,0,0,1"> 
            <Expander.Header> 
             <DockPanel Background="LightSkyBlue" 
                  Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Expander}}, 
                      Path=ActualWidth}"> 
              <TextBlock FontWeight="Bold" Text="{Binding Path=Name}" Margin="5,0,0,0" Width="100"/> 
              <TextBlock FontWeight="Bold" Text="{Binding Path=ItemCount}"/> 
             </DockPanel> 
            </Expander.Header> 
            <Expander.Content> 
             <ItemsPresenter/> 
            </Expander.Content> 
           </Expander> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </GroupStyle.ContainerStyle> 
     </GroupStyle> 

在結合收集的任何變化導致擴展重新開放。 有沒有什麼辦法可以記住用戶的喜好並保持摺疊狀態?

回答

0

我可以建議一個簡單的黑客 - 只需將IsExpanded屬性添加到您的模型類並將Expander.IsExpanded綁定到它。

+0

IsExpanded應該是組的屬性,分組由CollectionView執行。在模型中沒有組實體=( – 2012-04-16 07:42:40

+1

哦,是的,應該已經注意到了。看看這個問題 - 看起來像它有解決方案 - http://stackoverflow.com/questions/2808777/how-to-save-所述-isexpanded狀態式基團的頭 - 對的一列表視圖 – Nikolay 2012-04-16 07:57:47

1

問題是你在做什麼與綁定集合。 我同意尼古拉最好的選擇是讓你的viewmodel有一個你將綁定擴展器的屬性。

至於我在開始時問過的問題:你有點刷新CollectionView嗎? 刷新會導致UI被重新創建。 (意思是,它就像ObservableCollection上的Reset一樣,它告訴UI創建用戶控件並再次加載模板的XAML,這對性能不利)。

相關問題