我已经四处寻找对此的答案,但潜在的重复更关心的是演示而不是交互。
我有一个基本的列表框,每个项目的内容都是一个简单的字符串。
ListBox 本身被拉伸以填充其网格容器,但每个 ListBoxItem 的 hitarea 并不反映 ListBox 的宽度。看起来好像每个项目的 hitarea(指针接触区域)只是文本内容的宽度。无论文本大小如何,如何使其一直延伸。
我已将 HorizontalContentAlignment 设置为 Stretch,但这并不能解决我的问题。我唯一的另一个猜测是内容实际上正在拉伸,但背景是不可见的,因此不会捕获鼠标指针。
<ListBox
Grid.Row="1"
x:Name="ProjectsListBox"
DisplayMemberPath="Name"
ItemsSource="{Binding Path=Projects}"
SelectedItem="{Binding Path=SelectedProject}"
HorizontalContentAlignment="Stretch"/>
XAML 在这方面非常简单。如果我将鼠标悬停在其中一项中的文本上,则该项的整个宽度将变为活动状态。我想我只需要知道如何创建一个不可见的交互式背景。
HorizontalContentAlignment="Stretch"
应在 ItemContainerStyle 中设置才能使其正常工作。
XAML示例
<ListBox xmlns:sys="clr-namespace:System;assembly=mscorlib">
<ListBox.ItemsSource>
<x:Array Type="{x:Type sys:String}">
<sys:String>String 1</sys:String>
<sys:String>String 2</sys:String>
<sys:String>String 3</sys:String>
<sys:String>String 4</sys:String>
</x:Array>
</ListBox.ItemsSource>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Background="Green"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Update
尝试这个
<ListBox ...>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)