【发布时间】:2009-10-09 14:18:57
【问题描述】:
我有一个列表框,其中的项目使用 ResourceDictionary 样式设置样式,然后附加到 ItemContainerStyle 属性。这使我的 ListBoxItems 的 BorderThickness 假设为 1。
现在我想单独折叠项目,所以我使用 Visibility.Collapsed 但由于某种原因,ItemContainerStyle 创建的边框不会与列表框项目的其余部分一起消失。就好像它在我的项目后面创建了一个层,尽管项目被折叠,但它仍然存在。
如何在运行时将 ListBoxItem(或这个额外层)的 BorderThickness 设置为 0?
问候 sk
【问题讨论】:
-
你的项目真的崩溃了吗?即项目的总高度是否正确改变?如果没有,边界厚度将不是唯一需要解决的问题。
-
项目确实折叠了。但边界仍然存在:(
-
听起来你正在折叠代表你的项目的 UI 对象,而不是容器。容器是一个层,其中包含您的 UI 对象,并在您的项目被选中、悬停等时添加额外的样式......容器对 ListViewItem 类型进行操作。而 UI 元素由 DataTemplate 定义并分配给 ListBox.ItemTemplate 属性。它对源集合中的项目类型进行操作。尝试在 ItemTemplate 而不是 ItemContainerStyle 中定义边框。
标签: c# wpf listbox listboxitem