所需:根据显示项的条件设置列表视图的边框属性。例如:
如果ListView的任何一个(字符串)项以“S”开头,则将整个ListView的边框设置为红色。因此,问题是如何从它的项中寻址父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>
(其中转换器是显而易见的事情)不工作:我不能在setter的????部分使用TargetName="lv"
,这超出了作用域。我也不能在样式声明中使用<Style TargetType="ListView">
。当然,我可以在视图模型中上下移动,但是在.xaml中如何做到这一点呢?
今天一定过得不好,这是显而易见的事情。我的谷歌搜索结果很遗憾没有什么收获。
1条答案
按热度按时间tkclm6bt1#
Style
中的setter只能设置应用了Style
的元素的属性,即TextBlock
的Style
不能设置父级ListView
的属性。您可以将
Style
“移动”到ListView
,并实现转换器以返回true
(如果ListBox.Items.OfType<string>().Any(x => x?.StartsWith("s") == true)
或类似的值)。但是子元素的
Style
不能设置父元素的属性。