C# 从列表框项目选择中排除边距
我有一个C# 从列表框项目选择中排除边距,c#,wpf,listbox,listboxitem,C#,Wpf,Listbox,Listboxitem,我有一个列表框 <ListBox Margin="10" ItemsSource="{Binding Employees}" ItemTemplate="{DynamicResource EmployeesTemplate}" HorizontalContentAlignment="Stretch" BorderThickness="0" ScrollViewer.CanContentScroll="False"/> <
列表框
<ListBox Margin="10" ItemsSource="{Binding Employees}"
ItemTemplate="{DynamicResource EmployeesTemplate}"
HorizontalContentAlignment="Stretch" BorderThickness="0"
ScrollViewer.CanContentScroll="False"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type ListBoxItem}}, Path=IsMouseOver}" Value="True">
<Setter Property="Background" Value="LightBlue" TargetName="EmployeesTemplateBorder"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">
<Setter Property="Background" Value="RoyalBlue" TargetName="EmployeesTemplateBorder"/>
</DataTrigger>
</DataTemplate.Triggers>
当我从列表框
中选择一个项目时,突出显示的选择包括分配给每个项目底部的5点边距
(数据模板
中的边框
):
在左侧,您会注意到类似的情况,高光稍微溢出。直到现在我才注意到。。。嗯。所以,我想将选择突出显示限制在边界区域,不在边界区域之外,并且能够保留项目之间的边距
我将如何做到这一点?我试着尽可能地操纵
填充
和边距
,但我想不出来。也许我必须创建一个自定义的列表框
?我不确定是否有更简单的方法,但它对我有效。我在我的DataTemplate
中添加了一个DataTemplate.Triggers
部分
<ListBox Margin="10" ItemsSource="{Binding Employees}"
ItemTemplate="{DynamicResource EmployeesTemplate}"
HorizontalContentAlignment="Stretch" BorderThickness="0"
ScrollViewer.CanContentScroll="False"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type ListBoxItem}}, Path=IsMouseOver}" Value="True">
<Setter Property="Background" Value="LightBlue" TargetName="EmployeesTemplateBorder"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">
<Setter Property="Background" Value="RoyalBlue" TargetName="EmployeesTemplateBorder"/>
</DataTrigger>
</DataTemplate.Triggers>
显然,这对前景没有任何影响,但这不是现在要考虑的问题,因为这一点与突出显示例程相比相对容易