WPF MVVM 绑定模式下 界面刷新

public void DoEvents()
        {
            DispatcherFrame frame = new DispatcherFrame();
            Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
                new DispatcherOperationCallback(delegate (object f)
                {
                    ((DispatcherFrame)f).Continue = false;
                    return null;
                }
            ), frame);
            Dispatcher.PushFrame(frame);
        }

跟Winform的Application.DoEvent(); 效果类似

WPF(Windows Presentation Foundation)的应用程序中,通常采用MVVM(Model-View-ViewModel)设计模式,ViewModel层负责处理数据逻辑,视图(View)用于用户交互。如果你想要在ViewModel中调用DataGrid的刷新方法,你可以按照以下步骤操作: 1. **在ViewModel中**:首先,你需要在你的ViewModel类里声明一个委托或者事件,表示DataGrid需要刷新的行为,例如: ```csharp public event Action DataGridRefreshRequired; ``` 2. **公开刷新方法**:在ViewModel内定义一个方法,当需要刷新DataGrid时,触发这个事件: ```csharp private void RefreshDataGrid() { DataGridRefreshRequired?.Invoke(); } ``` 3. **在DataGrid上绑定**:在XAML文件中,将`DataGridRefreshRequired`事件绑定到DataGrid的某个可以触发刷新的按钮、命令或者直接绑定到`OnDemandLoading`属性(如果DataGrid支持的话),以便于从视图层面响应。 ```xaml <DataGrid Command="{Binding RefreshDataCommand}" On DemandLoading="DataGrid_OnDemandLoading" /> ``` 4. **实现DataGrid绑定事件**:如果DataGrid本身有内置的刷新机制,如`OnDemandLoading`事件,你需要在你的视图模型中添加相应的处理函数: ```csharp private void DataGrid_OnDemandLoading(object sender, EventArgs e) { ViewModel.RefreshDataGrid(); // 触发ViewModel中的刷新方法 } ``` 或者对于按钮或其他UI元素: ```xaml <Button Content="刷新" Command="{Binding RefreshDataCommand}" /> ``` 5. **设置Command**:确保`RefreshDataCommand`在ViewModel中已经正确地设置,它会调用`RefreshDataGrid`方法: ```csharp private ICommand _refreshDataCommand; public ICommand RefreshDataCommand => _refreshDataCommand ?? (_refreshDataCommand = new RelayCommand(RefreshDataGrid)); ``` 这里假设使用了`RelayCommand`作为命令管理器,它是一个常用的简单命令实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值