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