我想根据我使用的集合更改列表框的样式。在我的代码中,第一个类有一个TypeAItemViewModel
. 该集合将有 1 个无法选择的项目(假设为标题),为此我将使用IsHitTestVisible
.
但是另一个类使用NormalParameter
没有 s的集合IsHitTestVisible
。然后,当我将视图与NormalParameter
集合一起使用时,它会给我一个没有IsHitTestVisible
属性的错误。
public List<NormalParameters> Items{get;set;}
public List<TypeAItemViewModel> Items;
类: TypeAItemViewModel
public class TypeAItemViewModel
{
private TypeAParameter _parameter;
public bool IsHitTestVisible{get;set;}
}
风格:
<Style x:Key="SelectableListBoxItem" TargetType="{x:Type ListBoxItem}">
<Setter Property="IsHitTestVisible" Value="{Binding IsHitTestVisible}" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsHitTestVisible}" Value="false">
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="FontSize" Value="{StaticResource FontSizeTextBlock}" />
</DataTrigger>
</Style.Triggers>
</Style>
列表框:(使用 TypeAItemViewModel 的集合可以很好地工作)
<ListBox HorizontalContentAlignment="Stretch" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" ItemContainerStyle="{DynamicResource SelectableListBoxItem}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="{StaticResource Height}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBlock DataContext="{Binding Name}" Text="{Binding Value}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
</Grid>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我认为它应该与 ItemContainerStyle 一起使用,但我仍然无法解决它。
如果不清楚,请告诉我。
编辑:我有 2 个收藏。我想用 1 xaml 列表框显示它们不同的样式。 编辑:我使用的列表框是用户控件