gpt4 book ai didi

WPF:如何触发 GUI 行为以响应 View 模型事件?

转载 作者:行者123 更新时间:2023-12-04 16:11:06 25 4
gpt4 key购买 nike

我正在开发一个 WPF/MVVM 应用程序,并且我有一个列表框绑定(bind)到 ViewModel 中的数据。在不同的点上,我需要 View 模型使列表框滚动到给定的元素。

如何在不创建自定义控件的情况下做到这一点,同时仍然保持良好的关注点分离?

我目前通过在 View 层中创建一个具有依赖属性 VisibleIndex 的自定义行为类来使其工作。然后 XAML 代码将其绑定(bind)到 View 模型中的整数:

<ListBox x:Name="myListBox" 
local:ListBoxVisibilityBehavior.VisibleIndex="{Binding VisibleIndex}">

当设置整数时,它会触发依赖属性更新处理程序,该处理程序告诉列表框滚动到关联的索引。

这似乎有点棘手,因为列表框永远不会更改依赖项属性值,并且仅在值更改时才调用更新处理程序,因此确保相关项可见的唯一方法是执行以下操作:
// view-model code
this.VisibleIndex = -1;
this.VisibleIndex = 10;

我目前使用行为类的唯一原因是绑定(bind)我的自定义依赖属性,有没有办法用事件来做这样的事情?

最佳答案

在您的情况下,有些需要附加属性 - 因为在某些时候,您需要在“某处”调用以下方法......

ListBox.ScrollIntoView(item)  

或者
ListBoxItem.BringIntoView();

为此,您需要某种代码,附加的属性/行为是一种很好的打包方式,不会影响您的 MVVM。

话虽如此 - 如果您只需要将“选定项目”滚动到 View 中 在任何时候(大多数时候都是这种情况)。然后您可以使用不同的基于附加属性的解决方案(再次):

mvvm how to make a list view auto scroll to a new Item in a list view

你所要做的就是设置或绑定(bind)到 SelectedItem .

如果您愿意,那会“更好”一些-但机制是相同的。

关于WPF:如何触发 GUI 行为以响应 View 模型事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16137391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com