在wpf中将事件与子例程绑定到数据上下文中

时间:2019-02-20 11:03:47

标签: c# wpf mvvm binding

我已经在整个项目中使用了TestCombobox的名称创建了一个自定义控件。使用使用DataAdapter检索的数据表填充它。在按下F4,F5,F6,F7之类的键时,会触发各种选项,并相应地进行操作,例如添加新行,修改所选行等等。

在某一时刻,需要刷新数据表(需要从数据库中检索新数据并在组合框中填充)

我对MVVM没有任何了解。

我想要完成的是,当用户按下组合框中的F5按钮时,应该执行从设置为DataContext的类中的子例程RefreshCombo。

这是我的代码(坚持该问题。其余部分省略)

    从自定义控件TestCombobox引发
  1. 自定义事件

    public delegate void RefreshEvent();
    public event RefreshEvent Refresh;
    
    protected override void OnKeyUp(KeyEventArgs e)
    {
        if (e.Key == Key.F5) Refresh?.Invoke();
        base.OnKeyUp(e);
    }
    
  2. TestComboboxData类中的代码

    DataTable dt;
    public DataTable Data
    {
        get => dt;
        set
        {
            dt = value;
            RaisePropertyChanged("Data");
        }
    }
    
    int _id;
    public int Id
    {
        get => _id;
        set
        {
            _id = value;
            RaisePropertyChanged("Id");
        }
    }
    
    public void RefreshCombo()
    {
           //do something here
    
    }
    
  3. XAML代码

    <local:TestCombobox ItemsSource="{Binding Data}" DisplayMemberPath="Co1" SelectedValuePath="Id" 
                        SelectedValue="{Binding Id, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource SelValue}}"
                        />
    

预先感谢 阿米特(Amit)

0 个答案:

没有答案