.net - 将列表框项目的点击区域拉伸(stretch)到列表框的整个宽度? ListBox 样式通过主题隐式设置

标签 .net wpf xaml listbox listboxitem

我已经四处寻找答案,但潜在的重复更关心演示而不是交互。

我有一个基本的列表框,每个项目的内容都是一个简单的字符串。

ListBox 本身被拉伸(stretch)以填充它的网格容器,但每个 ListBoxItem 的命中区域并不反射(reflect) ListBox 的宽度。看起来好像每个项目的 hitarea(指针接触区域)只是文本内容的宽度。无论文本大小如何,我如何让这个一直延伸。

我已将 Horizo​​ntalContentAlignment 设置为 Stretch,但这并不能解决我的问题。我唯一的另一个猜测是内容实际上是在拉伸(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>

更新
试试这个
<ListBox ...>
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListBox.ItemContainerStyle>

关于.net - 将列表框项目的点击区域拉伸(stretch)到列表框的整个宽度? ListBox 样式通过主题隐式设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4634196/

相关文章:

c# - 加载资源字典时发生错误

wpf - 将命令绑定(bind)到 View 的 Loaded 事件

wpf - 一般行为

c# - 使用泛型编写类似的逻辑

c# - 如何从 C# 中的富文本框文本中查找字体名称、大小、样式、文本颜色

c# - 列表框、数据模板和触发器

c# - 在 Mahapps.Metro 中设置 WindowButtonCommands 样式

.net - NuGet "TargetFramework"缺少 .Net 引用编译错误...如何修复?

c# - Web 浏览器新窗口问题

c# - 绑定(bind)到 viewmodel 不工作 mvvm