我正在开发一个 WPF/MVVM 应用程序,并且我有一个列表框绑定到 ViewModel 中的数据。在不同的点上,我需要视图模型使列表框滚动到给定的元素。
如何在不创建自定义控件的情况下做到这一点,同时仍然保持良好的关注点分离?
我目前通过在视图层中创建一个具有依赖属性的自定义行为类来使其工作,VisibleIndex
然后 XAML 代码将其绑定到视图模型中的整数:
<ListBox x:Name="myListBox"
local:ListBoxVisibilityBehavior.VisibleIndex="{Binding VisibleIndex}">
当设置整数时,它会触发依赖属性更新处理程序,该处理程序告诉列表框滚动到关联的索引。
这似乎有点棘手,因为列表框永远不会更改依赖项属性值,并且仅在值更改时才调用更新处理程序,因此确保相关项可见的唯一方法是执行以下操作:
// view-model code
this.VisibleIndex = -1;
this.VisibleIndex = 10;
我目前使用行为类的唯一原因是绑定我的自定义依赖属性,有没有办法用事件来做这样的事情?