改变ListView中第一个子条目的可见性
本文关键字:可见性 ListView 第一个 改变 | 更新日期: 2023-09-27 18:04:06
我有ListView
控件在我的wpf窗口,其中包括自定义模板,并有ItemSource
绑定到字符串集合:
<ListView ItemsSource="{Binding ListOfStrings}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Expander Visibility="{Binding ToSomethingIDontKnowTo}"/>
<TextBlock Text="{Binding}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我需要Expander
只显示第一行。我知道第一个元素的样式可以用Trigger
来改变,像这样:
<Style TargetType="ListViewItem">
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="SomeProperty" Value="SomeValue" />
</Trigger>
</Style.Triggers>
</Style>
,但我还没有找到一种方法来应用这对ListViewItem
的子控件
这就是如何触发Expander
可见性
<ListView AlternationCount="{Binding ItemsSource.Count, RelativeSource={RelativeSource Self}}" ItemsSource="{Binding ListOfStrings}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Expander Header="My">
<Expander.Style>
<Style TargetType="Expander">
<Setter Property="Visibility" Value="Collapsed"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding (ItemsControl.AlternationIndex), RelativeSource={RelativeSource FindAncestor, AncestorType=ListViewItem}}" Value="0">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Expander.Style>
</Expander>
<TextBlock Text="{Binding}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>