相关疑难解决方法(0)

Windows 窗体绑定:是否有类似于 DataBindingComplete 的事件,但在所有绑定完成时触发?

只有在完成所有初始数据绑定后,我才需要更改某个 DataGridView 的属性(其绑定之一的 DataSourceUpdateMode)。

我尝试订阅“DataBindingComplete”事件,但它触发了太多次(对于与控件关联的每个绑定一次或多次);我需要的是一个更全局的“AllDataBindingsComplete”事件,当控件准备好向用户显示时触发。

作为临时解决方法,我正在使用 MouseDown 事件(我假设当用户能够单击控件时,这意味着控件被显示...... :) 以及我正在玩的事件 - SelectionChanged - 在 MouseDown 之后触发):

    protected override void OnMouseDown(MouseEventArgs e)
    {
        Binding selectedItemsBinding = this.DataBindings["SelectedItems"];
        if (selectedItemsBinding != null)
        {
            selectedItemsBinding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
        }

        base.OnMouseDown(e);
    }
Run Code Online (Sandbox Code Playgroud)

它有效,但它闻起来像一个丑陋的黑客很多(而且它被调用了太多次,只有一次就足以满足我的需要)。

有没有更好的办法?

(是的,我正在尝试在 Windows 窗体项目中采用 MVVM,并且我已经向 DataGridView 添加了一个可绑定的“SelectedItems”属性...)

c# data-binding events mvvm winforms

1
推荐指数
1
解决办法
4216
查看次数

标签 统计

c# ×1

data-binding ×1

events ×1

mvvm ×1

winforms ×1