![]() |
1
1
正确的做法是,列表框本身没有特定的焦点状态(无效状态除外,该状态对您没有用处)。只能使用模板更改单个项目的焦点状态。 选项1如果要根据控件中尚未存在的状态进行更改,最好是创建自定义用户控件。在这种情况下,您将使用2个ControlStoryboardAction行为捕获焦点状态,这些行为使用2个Storyboards将控件转换为焦点/从焦点转换为焦点。我可能会对未聚焦状态使用第二个(非列表)控件,并将其绑定到列表框的选定项。 选项2您可以对现有控件(本例中的列表框)进行子类化,但由于需要提供默认模板,所以这项工作要做得更多。您可以添加焦点/未焦点状态。 选择取决于您的长期目标,但我将使用一个简单的自定义用户控件。可能不到一个小时就能完成。 希望这有帮助。 |
![]() |
2
0
我已经用过 Alex Yakhnin's implemenation ,它只将列表框的大小调整为单个项目的高度,所选项目显示,其他项目仅在上方和下方,但不在视区中。 |
![]() |
3
0
不,不,没有人!!不需要调整大小,不需要自定义控件,更糟的是,需要子类化!只需为ListBoxItem创建一个样式,当ListBoxItem的IsSelected为false且ListBox本身没有焦点时,该样式将其Visibility属性设置为“Collapsed”,并将其“IsEnabled”属性设置为“false”。(最好的方法是使用多个程序。)最后,将列表框设置为其内容的自动调整大小。完成又完成!它也是纯XAML! 除了将可见性绑定到ViewModel中的IsFiltered属性之外,我们使用此技术快速“筛选”列表甚至树视图。 最重要的是,由于您没有绑定到您不断添加和删除内容的可观察集合,因此任何仅为视图的属性(例如,isexpanded)都与再次显示项目时所保留的属性完全相同,而不必在ViewModel中跟踪它们!这纯粹是用户界面。所有“查看”。 我有没有提到它是纯XAML????哦。。。我做到了。只是确保你知道它是纯XAML!!!! 再一次…制作 当然 当您隐藏ListBoxItem(使用触发器或绑定为您执行此操作)或键盘导航不起作用时,将“IsEnabled”设置为false! |
![]() |
Bigeyes · 如何在MVVM模式中添加行? 8 年前 |
![]() |
User9898 · 悬停回到原始颜色时为什么选择 9 年前 |
![]() |
Huma Ali · WCF已完成事件中的异常处理 9 年前 |
![]() |
Nerd in Training · 文件副本发布错误 10 年前 |