从ListView项中指定父ListView的属性

  • 本文关键字:ListView 属性 wpf
  • 更新时间 :
  • 英文 :


Desired:根据显示项的条件设置列表视图的边框属性。例如:

如果ListView的任何一个(字符串)项以"S&quot开头,则将整个ListView的边框设置为红色。所以问题是如何解决父列表视图的项目(在xaml最好)就像

<ListView Name="lv" Grid.Row="2" ItemsSource="{Binding TheItemList}" Height="100" BorderBrush="Black">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding }">
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Converter={StaticResource StringToBoolean}} 
Value="True">
<Setter ???? Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

(其中转换器是显而易见的事情)不起作用:我不能使用????中的TargetName="lv"setter的一部分,在作用域之外。我也不能在样式声明中使用<Style TargetType="ListView">。我当然可以在视图模型中来回切换,但在。xaml中怎么做呢?

一定是有糟糕的一天,这似乎是一个显而易见的事情。遗憾的是,我在谷歌上搜索的结果并不多。

Style中的setter只能设置Style所应用的元素的属性,即TextBlockStyle不能设置父ListView的属性。

你可以"移动"将Style转换为ListView,如果ListBox.Items.OfType<string>().Any(x => x?.StartsWith("s") == true)或类似的东西,则实现转换器返回true

但是子元素的Style不能设置父元素的属性。

最新更新