Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在WPF中的ListBox边框上绘制ListBoxItem边框?_Wpf - Fatal编程技术网

如何在WPF中的ListBox边框上绘制ListBoxItem边框?

如何在WPF中的ListBox边框上绘制ListBoxItem边框?,wpf,Wpf,我想设计一个列表框,使所选项目在列表框外突出显示。 列表框的边框为1px。 ListBoxItem有一个带“0 0 1”的边框,当IsSelected为true时,有一个高亮显示颜色 选择某个项目时,其右侧的边框应绘制在列表框的边框上 下面是一张图片,展示了它的外观: 我试图使用ListBox和ListBoxItem的边距,但是当到达ListBox的边距时,ListBoxItem的边距被切断 有没有办法在ListBox的边框上绘制ListBoxItems边框?您可以重新设置ListBox(以更

我想设计一个
列表框
,使所选项目在
列表框
外突出显示。
列表框
的边框为1px。
ListBoxItem
有一个带
“0 0 1”
的边框,当
IsSelected
为true时,有一个高亮显示颜色

选择某个项目时,其右侧的边框应绘制在
列表框的边框上

下面是一张图片,展示了它的外观:

我试图使用
ListBox
ListBoxItem
的边距,但是当到达
ListBox
的边距时,
ListBoxItem
的边距被切断


有没有办法在
ListBox
的边框上绘制
ListBoxItems
边框?

您可以重新设置
ListBox
(以更好地控制边距等)和
ListBoxItem
的模板,根据
IsSelected
属性定义
边框笔刷

“其右侧的边框应绘制在
列表框的边框上方

好的,您可以通过对
列表框
完全不使用右
边框来解决这个问题。您可以让每个
ListBoxItem
负责其右侧
边框的颜色。
ListBox
本身看起来是这样的,没有右边的
边框

现在,您只需在每个
ListBoxItem
上添加一个右
边框

最后,我在内部
itemsresenter
中添加了
Margin=“1 0 0”
调整,以使整体外观更平滑


最终外观:


您必须添加大量样式才能获得完整的结果,但这是一种可行的方法。

您可以重新设置
列表框
(以便更好地控制边距等)和
列表框项
的模板,以基于
IsSelected
属性定义
边界笔刷

“其右侧的边框应绘制在
列表框的边框上方

好的,您可以通过对
列表框
完全不使用右
边框来解决这个问题。您可以让每个
ListBoxItem
负责其右侧
边框的颜色。
ListBox
本身看起来是这样的,没有右边的
边框

现在,您只需在每个
ListBoxItem
上添加一个右
边框

最后,我在内部
itemsresenter
中添加了
Margin=“1 0 0”
调整,以使整体外观更平滑


最终外观:


您必须添加大量样式才能获得完整的效果,但这是一种可行的方法。

谢谢。已经考虑过这个解决方案,但希望避免,因为边界在最后一个ListboxItem之后停止。例如,在动态填充的导航栏中使用占位符时,您需要一个占位符来保持布局。您还可以使用网格在
列表框
上显示一个矩形,并找到将矩形位置绑定到所选listboxitem的方法。我在列表框底部添加了一个边框控件,其边框厚度与ListBoxItems相同。这样,它看起来像一个控件,可以在整个高度上拉伸。这比预期的效果要好。再次谢谢,谢谢。已经考虑过这个解决方案,但希望避免,因为边界在最后一个ListboxItem之后停止。例如,在动态填充的导航栏中使用占位符时,您需要一个占位符来保持布局。您还可以使用网格在
列表框
上显示一个矩形,并找到将矩形位置绑定到所选listboxitem的方法。我在列表框底部添加了一个边框控件,其边框厚度与ListBoxItems相同。这样,它看起来像一个控件,可以在整个高度上拉伸。这比预期的效果要好。再次感谢你。