gpt4 book ai didi

wpf - MVVM 模式 - 执行 View 操作

转载 作者:行者123 更新时间:2023-12-03 10:29:08 25 4
gpt4 key购买 nike

我正在使用 MVVM Pattern(带有 MVVM Light)来构建我的 XAML 应用程序(win8)。我有一个 ListView,它绑定(bind)到我的 ViewModel 的一个属性。我还有一个按钮可以触发对该 ViewModel 的操作,该操作会更新该属性(这会导致更新 ListView)。该按钮使用命令对 ViewModel 执行操作。到现在为止还挺好。

问题是刷新列表后,我需要执行严格属于我的 View 的操作,而不是 View 模型。它应该将列表滚动到特定项目。如何触发该操作?我应该使用特定的 ListView 事件吗?

最佳答案

使用 EventHandlerScrollIntoView(Object)方法,您可以在不使用 ViewMovel 中的 View 引用并尊重 MVVM 模式的情况下实现您想要的。

在您的 ViewModel 中创建一个事件,如下所示:

public event EventHandler ScrollListView;

在您的 View 中添加回调以滚动 ListView属性更新时:
ViewModel vm;
vm.ScrollListView += (sender, e) =>
{
var specificItem = **some item**;
MyListView.SelectedItem = specificItem;
MyListView.UpdateLayout();
MyListView.ScrollIntoView(MyListView.SelectedItem);
};

然后在您的 ViewModel 中更新该属性并想要滚动 ListView :
if (this.ScrollListView != null)
{
this.ScrollListView(this, EventArgs.Empty);
}

当然,这就是我通常对每种情况进行一些调整的方式。

关于wpf - MVVM 模式 - 执行 View 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16446048/

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