【发布时间】:2014-04-22 22:21:55
【问题描述】:
我有一个 WPF 应用程序,其中包含动态生成的列表框项。我想禁用列表框项目的选择或“可聚焦性”,而不禁用每个列表框项目中的所有控件(它们包含用户需要能够与之交互的按钮和链接)。下面是我试图阻止的图片:
这张图片显示了两个列表框项目。我点击了顶部列表框项目的背景区域并选择了它,这使文本更难阅读并且在视觉上没有吸引力。
【问题讨论】:
-
如果你不想选择,那么你可以使用一个简单的 ItemsControl 并在其样式中添加一个 ScrollViewer。
-
dynamically generated listbox items听起来真的很奇怪,而且太winforms。您应该使用 DataBinding,是的,正如 @Didier 所说,您需要ItemsControl而不是ListBox。 -
我可能使用了错误的术语。列表框项通过可观察集合上的数据绑定呈现。
-
我已经实现了 ItemsControl 而不是 Listbox 并且它确实禁用了选择 - 但是它似乎有一个缺点。使用 ItemsControl,我有一个
<Style TargetType="{x:Type ListBoxItem}">XAML 部分,用于在鼠标悬停事件时控制单个列表框项目的边框、突出显示等。使用 ItemsControl,样式将应用于整个列表,而不仅仅是单个项目。我尝试使用<Style TargetType="{x:Type ItemsControlItem}">重写我的样式,但这不存在。选项? -
简单 ItemsControl 的项目被包装到 ContentPresenter 中。不幸的是,它没有 Template 属性。