您能否帮助我了解如何在处理视图模型中的列表时自动滚动数据网格列表。
这是一个想法,我有一个项目列表加载到数据网格,然后我按下按钮并对视图模型中的每个项目执行一些操作,现在我希望一旦项目在视图模型中处理完毕,数据网格就会滚动列表到已处理的项目,依此类推,直到处理完最后一个项目。
我正在使用带有依赖注入的 WinUI 模板工作室,问题是我不知道从视图模型更新视图的正确方法是什么......
有点迷失在 MVVM 模式规则和实践中。
可以使用
DataGrid
的ScrollIntoView
方法。
现在,由于您的视图模型知道某个项目何时被“处理”,因此您可以在视图模型中创建一个
ItemProcessed
事件并订阅该事件。
例如,
ViewModel.cs
public partial class ViewModel : ObservableObject
{
...
public event EventHandler<object>? ItemProcessed;
private void OnItemProcessed(object item)
{
ItemProcessed?.Invoke(this, item);
}
...
}
MainPage.xaml.cs
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.ViewModel = new MainPageViewModel();
this.ViewModel.ItemProcessed += ViewModel_ItemProcessed;
}
public MainPageViewModel ViewModel { get; }
private void ViewModel_ItemProcessed(object? sender, Item item)
{
// Don't forget to name your DataGrid.
this.DataGridControl.ScrollIntoView(item, column: null);
}
}