2016-07-25 55 views
0

对不起,误导性标题。无论如何,我会尽力解释更好。我想在ListView的集合中显示集合。但显示器应使用扩展器来显示内部收集项目。所有项目应显示在其适当的列中。其实我所做的是这样的:从列表中显示作为源的列表集合

XAML

<CollectionViewSource x:Key="GroupedItems" Source="{Binding Countries}"> 
<CollectionViewSource.GroupDescriptions> 
    <PropertyGroupDescription PropertyName="Name"/> 
</CollectionViewSource.GroupDescriptions> 
</CollectionViewSource> 
... 
<ListView ItemsSource="{Binding Source={StaticResource GroupedItems}}" Name="Playing"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Country" Width="150" DisplayMemberBinding="{Binding Source={x:Static sys:String.Empty}}" /> 
      <GridViewColumn Header="Leagues">       
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <ItemsControl ItemsSource="{Binding Leagues}" Margin="25 0 0 0"> 
          <ItemsControl.ItemTemplate> 
           <DataTemplate> 
            <Grid HorizontalAlignment="Stretch" Background="#FFBCDAEC"> 
             <TextBlock FontSize="18" Padding="5" Text="{Binding Name}"/> 
            </Grid> 
           </DataTemplate> 
          </ItemsControl.ItemTemplate> 
         </ItemsControl> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
    <ListView.GroupStyle> 
     <GroupStyle> 
      <GroupStyle.ContainerStyle> 
       <Style TargetType="{x:Type GroupItem}"> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate> 
           <Expander IsExpanded="True"> 
            <Expander.Header> 
             <TextBlock Text="{Binding Name}" Foreground="Red" FontSize="22" VerticalAlignment="Bottom" /> 
            </Expander.Header> 
            <ItemsPresenter /> 
           </Expander> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </GroupStyle.ContainerStyle> 
     </GroupStyle> 
    </ListView.GroupStyle> 
</ListView> 

在膨胀上面显示的代码的国家的名字,但不幸的是我不能管理,以显示为扩展的列表中的国家名称在列表中。

我想显示联盟的扩展器,相应的匹配应显示在相应的列中。在我的ViewModel中,我有一个国家集合,并且每个集合都是Country>Leagues collection >Matches

请参阅下面的类:

public partial class WinExpander : Window 
{ 
    public WinExpander() 
    { 
     InitializeComponent(); 

     this.DataContext = new ViewModel(); 
    } 
} 

public class ViewModel 
{ 
    public List<Country> Countries { get; set; } 
    public ViewModel() 
    { 
     Countries = new List<Country>(); 
    } 
} 

public class Country 
{ 
    public string Name { get; set; } 
    public List<League> Leagues { get; set; } 

    public Country() 
    { 
     Leagues = new List<League>(); 
    } 
} 

public class League 
{ 
    public string Name { get; set; } 
    public List<Match> Matches { get; set; } 

    public League() 
    { 
     Matches = new List<Match>(); 
    } 
} 

public class Match 
{ 
    public string Name { get; set; } 
} 

回答

0

Output

  1. 使用ExpanderMatches。要显示MatchesLeagues同步,请同步Leagues扩展器和Matches扩展器。当我们扩展League时,相应的扩展器也将扩展。

  2. 要获得适当的外观和感觉,我们必须从Match列中删除Expander Icon列。

  3. 要同步LeagueMatchExpanders,在League引入一个称为 'IsExpanded' 属性。现在League类必须实现INotifyPropertyChanged

    bool _isExpanded=true; 
    public bool IsExpanded 
    { 
        get { return _isExpanded; } 
        set { _isExpanded = value; OnPropertyChanged("IsExpanded"); } 
    } 
    

ListView的标记:

<ListView ItemsSource="{Binding Source={StaticResource GroupedItems}}" Name="Playing"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Country" Width="150" DisplayMemberBinding="{Binding Source={x:Static sys:String.Empty}}" /> 
      <GridViewColumn Header="Leagues"> 
       <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <ItemsControl Margin="25 0 0 0" ItemsSource="{Binding Leagues}"> 
            <ItemsControl.ItemTemplate> 
             <DataTemplate> 
              <Expander IsExpanded="{Binding IsExpanded, Mode=TwoWay}" Margin="5" > 
               <Expander.Header> 
                <TextBlock FontSize="18" Padding="5" Text="{Binding Name}"/> 
               </Expander.Header> 
               <ItemsControl ItemsSource="{Binding Matches}"> 
                <ItemsControl.ItemTemplate> 
                 <DataTemplate> 
                  <TextBlock FontSize="18" Padding="5" Text="{Binding Source={x:Static sys:String.Empty}}"/> 
                 </DataTemplate> 
                </ItemsControl.ItemTemplate> 
               </ItemsControl> 
              </Expander> 
             </DataTemplate> 
            </ItemsControl.ItemTemplate> 
           </ItemsControl> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      <GridViewColumn Header="Match"> 
       <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <ItemsControl Margin="25 0 0 0" ItemsSource="{Binding Leagues}"> 
            <ItemsControl.ItemTemplate> 
             <DataTemplate> 
              <Expander Style="{StaticResource MatchExpanderStyle}" IsExpanded="{Binding IsExpanded, Mode=TwoWay}" Margin="5">             
               <Expander.Header> 
                <TextBlock Visibility="Hidden" FontSize="18" Padding="5" Text="{Binding Name}"/> 
               </Expander.Header> 
               <ItemsControl ItemsSource="{Binding Matches}"> 
                <ItemsControl.ItemTemplate> 
                 <DataTemplate> 
                  <TextBlock FontSize="18" Padding="5" Text="{Binding Name}"/> 
                 </DataTemplate> 
                </ItemsControl.ItemTemplate> 
               </ItemsControl> 
              </Expander> 
             </DataTemplate> 
            </ItemsControl.ItemTemplate> 
           </ItemsControl> 
          </DataTemplate> 

         </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
    <ListView.GroupStyle> 
     ... 
    </ListView.GroupStyle> 
</ListView> 
将这个整个事情

Window.Resources下,或Application.Resources。我已将Visibility更改为隐藏ToggleButton,名称为HeaderSite。一切都由VS自动生成。

<SolidColorBrush x:Key="Expander.MouseOver.Circle.Stroke" Color="#FF3C7FB1"/> 
      <SolidColorBrush x:Key="Expander.MouseOver.Circle.Fill" Color="Transparent"/> 
      <SolidColorBrush x:Key="Expander.MouseOver.Arrow.Stroke" Color="#222"/> 
      <SolidColorBrush x:Key="Expander.Pressed.Circle.Stroke" Color="#FF526C7B"/> 
      <SolidColorBrush x:Key="Expander.Pressed.Circle.Fill" Color="Transparent"/> 
      <SolidColorBrush x:Key="Expander.Pressed.Arrow.Stroke" Color="#FF003366"/> 
      <SolidColorBrush x:Key="Expander.Disabled.Circle.Stroke" Color="DarkGray"/> 
      <SolidColorBrush x:Key="Expander.Disabled.Circle.Fill" Color="Transparent"/> 
      <SolidColorBrush x:Key="Expander.Disabled.Arrow.Stroke" Color="#666"/> 
      <SolidColorBrush x:Key="Expander.Static.Circle.Fill" Color="Transparent"/> 
      <SolidColorBrush x:Key="Expander.Static.Circle.Stroke" Color="DarkGray"/> 
      <SolidColorBrush x:Key="Expander.Static.Arrow.Stroke" Color="#666"/> 
      <Style x:Key="ExpanderRightHeaderStyle" TargetType="{x:Type ToggleButton}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ToggleButton}"> 
          <Border Padding="{TemplateBinding Padding}"> 
           <Grid Background="Transparent" SnapsToDevicePixels="False"> 
            <Grid.RowDefinitions> 
             <RowDefinition Height="19"/> 
             <RowDefinition Height="*"/> 
            </Grid.RowDefinitions> 
            <Grid> 
             <Grid.LayoutTransform> 
              <TransformGroup> 
               <TransformGroup.Children> 
                <TransformCollection> 
                 <RotateTransform Angle="-90"/> 
                </TransformCollection> 
               </TransformGroup.Children> 
              </TransformGroup> 
             </Grid.LayoutTransform> 
             <Ellipse x:Name="circle" Fill="{StaticResource Expander.Static.Circle.Fill}" HorizontalAlignment="Center" Height="19" Stroke="{StaticResource Expander.Static.Circle.Stroke}" VerticalAlignment="Center" Width="19"/> 
             <Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="{StaticResource Expander.Static.Arrow.Stroke}" StrokeThickness="2" VerticalAlignment="Center"/> 
            </Grid> 
            <ContentPresenter HorizontalAlignment="Center" Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Top"/> 
           </Grid> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsChecked" Value="true"> 
            <Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> 
           </Trigger> 
           <Trigger Property="IsMouseOver" Value="true"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.MouseOver.Circle.Stroke}"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.MouseOver.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.MouseOver.Arrow.Stroke}"/> 
           </Trigger> 
           <Trigger Property="IsPressed" Value="true"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.Pressed.Circle.Stroke}"/> 
            <Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.Pressed.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.Pressed.Arrow.Stroke}"/> 
           </Trigger> 
           <Trigger Property="IsEnabled" Value="false"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.Disabled.Circle.Stroke}"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.Disabled.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.Disabled.Arrow.Stroke}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
      <Style x:Key="ExpanderUpHeaderStyle" TargetType="{x:Type ToggleButton}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ToggleButton}"> 
          <Border Padding="{TemplateBinding Padding}"> 
           <Grid Background="Transparent" SnapsToDevicePixels="False"> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="19"/> 
             <ColumnDefinition Width="*"/> 
            </Grid.ColumnDefinitions> 
            <Grid> 
             <Grid.LayoutTransform> 
              <TransformGroup> 
               <TransformGroup.Children> 
                <TransformCollection> 
                 <RotateTransform Angle="180"/> 
                </TransformCollection> 
               </TransformGroup.Children> 
              </TransformGroup> 
             </Grid.LayoutTransform> 
             <Ellipse x:Name="circle" Fill="{StaticResource Expander.Static.Circle.Fill}" HorizontalAlignment="Center" Height="19" Stroke="{StaticResource Expander.Static.Circle.Stroke}" VerticalAlignment="Center" Width="19"/> 
             <Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="{StaticResource Expander.Static.Arrow.Stroke}" StrokeThickness="2" VerticalAlignment="Center"/> 
            </Grid> 
            <ContentPresenter Grid.Column="1" HorizontalAlignment="Left" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center"/> 
           </Grid> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsChecked" Value="true"> 
            <Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> 
           </Trigger> 
           <Trigger Property="IsMouseOver" Value="true"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.MouseOver.Circle.Stroke}"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.MouseOver.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.MouseOver.Arrow.Stroke}"/> 
           </Trigger> 
           <Trigger Property="IsPressed" Value="true"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.Pressed.Circle.Stroke}"/> 
            <Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.Pressed.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.Pressed.Arrow.Stroke}"/> 
           </Trigger> 
           <Trigger Property="IsEnabled" Value="false"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.Disabled.Circle.Stroke}"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.Disabled.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.Disabled.Arrow.Stroke}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
      <Style x:Key="ExpanderLeftHeaderStyle" TargetType="{x:Type ToggleButton}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ToggleButton}"> 
          <Border Padding="{TemplateBinding Padding}"> 
           <Grid Background="Transparent" SnapsToDevicePixels="False"> 
            <Grid.RowDefinitions> 
             <RowDefinition Height="19"/> 
             <RowDefinition Height="*"/> 
            </Grid.RowDefinitions> 
            <Grid> 
             <Grid.LayoutTransform> 
              <TransformGroup> 
               <TransformGroup.Children> 
                <TransformCollection> 
                 <RotateTransform Angle="90"/> 
                </TransformCollection> 
               </TransformGroup.Children> 
              </TransformGroup> 
             </Grid.LayoutTransform> 
             <Ellipse x:Name="circle" Fill="{StaticResource Expander.Static.Circle.Fill}" HorizontalAlignment="Center" Height="19" Stroke="{StaticResource Expander.Static.Circle.Stroke}" VerticalAlignment="Center" Width="19"/> 
             <Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="{StaticResource Expander.Static.Arrow.Stroke}" StrokeThickness="2" VerticalAlignment="Center"/> 
            </Grid> 
            <ContentPresenter HorizontalAlignment="Center" Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Top"/> 
           </Grid> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsChecked" Value="true"> 
            <Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> 
           </Trigger> 
           <Trigger Property="IsMouseOver" Value="true"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.MouseOver.Circle.Stroke}"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.MouseOver.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.MouseOver.Arrow.Stroke}"/> 
           </Trigger> 
           <Trigger Property="IsPressed" Value="true"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.Pressed.Circle.Stroke}"/> 
            <Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.Pressed.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.Pressed.Arrow.Stroke}"/> 
           </Trigger> 
           <Trigger Property="IsEnabled" Value="false"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.Disabled.Circle.Stroke}"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.Disabled.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.Disabled.Arrow.Stroke}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
      <Style x:Key="ExpanderHeaderFocusVisual"> 
       <Setter Property="Control.Template"> 
        <Setter.Value> 
         <ControlTemplate> 
          <Border> 
           <Rectangle Margin="0" SnapsToDevicePixels="true" Stroke="Black" StrokeThickness="1" StrokeDashArray="1 2"/> 
          </Border> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
      <Style x:Key="ExpanderDownHeaderStyle" TargetType="{x:Type ToggleButton}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ToggleButton}"> 
          <Border Padding="{TemplateBinding Padding}"> 
           <Grid Background="Transparent" SnapsToDevicePixels="False"> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="19"/> 
             <ColumnDefinition Width="*"/> 
            </Grid.ColumnDefinitions> 
            <Ellipse x:Name="circle" Fill="{StaticResource Expander.Static.Circle.Fill}" HorizontalAlignment="Center" Height="19" Stroke="{StaticResource Expander.Static.Circle.Stroke}" VerticalAlignment="Center" Width="19"/> 
            <Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="{StaticResource Expander.Static.Arrow.Stroke}" StrokeThickness="2" VerticalAlignment="Center"/> 
            <ContentPresenter Grid.Column="1" HorizontalAlignment="Left" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center"/> 
           </Grid> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsChecked" Value="true"> 
            <Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> 
           </Trigger> 
           <Trigger Property="IsMouseOver" Value="true"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.MouseOver.Circle.Stroke}"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.MouseOver.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.MouseOver.Arrow.Stroke}"/> 
           </Trigger> 
           <Trigger Property="IsPressed" Value="true"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.Pressed.Circle.Stroke}"/> 
            <Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.Pressed.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.Pressed.Arrow.Stroke}"/> 
           </Trigger> 
           <Trigger Property="IsEnabled" Value="false"> 
            <Setter Property="Stroke" TargetName="circle" Value="{StaticResource Expander.Disabled.Circle.Stroke}"/> 
            <Setter Property="Fill" TargetName="circle" Value="{StaticResource Expander.Disabled.Circle.Fill}"/> 
            <Setter Property="Stroke" TargetName="arrow" Value="{StaticResource Expander.Disabled.Arrow.Stroke}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
      <Style x:Key="MatchExpanderStyle" TargetType="{x:Type Expander}"> 
       <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
       <Setter Property="Background" Value="Transparent"/> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
       <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
       <Setter Property="BorderBrush" Value="Transparent"/> 
       <Setter Property="BorderThickness" Value="1"/> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type Expander}"> 
          <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="3" SnapsToDevicePixels="true"> 
           <DockPanel> 
            <ToggleButton x:Name="HeaderSite" Visibility="Hidden" ContentTemplate="{TemplateBinding HeaderTemplate}" ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}" Content="{TemplateBinding Header}" DockPanel.Dock="Top" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FocusVisualStyle="{StaticResource ExpanderHeaderFocusVisual}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" MinWidth="0" MinHeight="0" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/> 
            <ContentPresenter x:Name="ExpandSite" DockPanel.Dock="Bottom" Focusable="false" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="Collapsed" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
           </DockPanel> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsExpanded" Value="true"> 
            <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible"/> 
           </Trigger> 
           <Trigger Property="ExpandDirection" Value="Right"> 
            <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Right"/> 
            <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Left"/> 
            <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderRightHeaderStyle}"/> 
           </Trigger> 
           <Trigger Property="ExpandDirection" Value="Up"> 
            <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Top"/> 
            <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Bottom"/> 
            <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderUpHeaderStyle}"/> 
           </Trigger> 
           <Trigger Property="ExpandDirection" Value="Left"> 
            <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Left"/> 
            <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Right"/> 
            <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderLeftHeaderStyle}"/> 
           </Trigger> 
           <Trigger Property="IsEnabled" Value="false"> 
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 

其他一切保持相同年龄较大的答案在这里:How to bind a list of item in CollectionViewSource?

+0

感谢这个,其实我不能测试你的代码,我来试试,明天。再次感谢:) – Heisenberg

+0

@lokusking查看答案plz – AnjumSKhan

+0

lokusking会发生什么情况?为什么downvote? – Heisenberg