我已经在整个项目中使用了TestCombobox的名称创建了一个自定义控件。使用使用DataAdapter检索的数据表填充它。在按下F4,F5,F6,F7之类的键时,会触发各种选项,并相应地进行操作,例如添加新行,修改所选行等等。
在某一时刻,需要刷新数据表(需要从数据库中检索新数据并在组合框中填充)
我对MVVM没有任何了解。
我想要完成的是,当用户按下组合框中的F5按钮时,应该执行从设置为DataContext的类中的子例程RefreshCombo。
这是我的代码(坚持该问题。其余部分省略)
自定义事件
public delegate void RefreshEvent();
public event RefreshEvent Refresh;
protected override void OnKeyUp(KeyEventArgs e)
{
if (e.Key == Key.F5) Refresh?.Invoke();
base.OnKeyUp(e);
}
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
}
XAML代码
<local:TestCombobox ItemsSource="{Binding Data}" DisplayMemberPath="Co1" SelectedValuePath="Id"
SelectedValue="{Binding Id, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource SelValue}}"
/>
预先感谢 阿米特(Amit)