我有一系列物品。我使用DataTemplate
在WPF ListBox中呈现项目。 DataTemplate的一部分是Thumb
,用于调整项目的大小和视觉上的分隔。 Thumb.Visibility
绑定到项目的属性(例如,最后一项没有可见的Thumb)。
问题在于,选择ListBox
中的项目也会选择Thumb
,因为它是ListBoxItem
的一部分。所需的行为是仅选择没有Thumb
的数据。
如何才能获得此行为?我不想按代码ListBox
添加项目,也不想手动处理Thumb
的可见性。目前,我从DataTemplate
获得了所有这些。
答案 0 :(得分:0)
在项容器样式内执行此操作,而不是DataTemplate。即定义您自己的ListBoxItem
样式,并仅突出显示所需内容。 E.g:
<Style x:Key="MyStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Grid>
<Border
Name="Border"
Margin="0, 0, 0, 1"
Padding="2"
SnapsToDevicePixels="true">
<ContentPresenter />
</Border>
<Border Grid.Row="1" BorderThickness="0, 0, 0, 1" BorderBrush="Black"
SnapsToDevicePixels="True"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="Background" Value="#DDDDDD"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="#888888"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
然后:
<ListBox ItemContainerStyle="{StaticResource MyStyle}">