wpf 从列表视图项寻址父列表视图的属性

au9on6nz  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(184)

所需:根据显示项的条件设置列表视图的边框属性。例如:
如果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中如何做到这一点呢?
今天一定过得不好,这是显而易见的事情。我的谷歌搜索结果很遗憾没有什么收获。

tkclm6bt

tkclm6bt1#

Style中的setter只能设置应用了Style的元素的属性,即TextBlockStyle不能设置父级ListView的属性。
您可以将Style“移动”到ListView,并实现转换器以返回true(如果ListBox.Items.OfType<string>().Any(x => x?.StartsWith("s") == true)或类似的值)。
但是子元素的Style不能设置父元素的属性。

相关问题