在viewModel中响应鼠标点击事件,而不是后面的代码
本文关键字:代码 事件 viewModel 响应 鼠标 | 更新日期: 2023-09-27 18:02:50
我有一个WPF应用程序,其中列表视图是通过ViewModel设置的。
我有一些像下面的代码来处理一个鼠标点击列表视图,但我已经读过物联网会更好地处理这个视图模型而不是背后的代码?
我有如下代码
XAML:<ListView ... PreviewMouseLeftButtonUp="listView_Click"> ...
背后的代码:
private void listView_Click(object sender, RoutedEventArgs e)
{
var item = (sender as ListView).SelectedItem;
if (item != null)
{
...
}
}
我试图有像下面的代码,但有一种方法将其移动到视图模型完全避免后面的代码?
public void listView_Click(object sender,RoutedEventArgs e)
{
var item = (sender as ListView).SelectedItem;
if (item != null)
{
Record record = item.DataContext as Record;
if (record != null)
{
MyViewModel viewModel = ((MyViewModel)this.DataContext);
var result = viewModel.performWork(record);
}
}
}
注意:记录是一个ListViewItem
谢谢,尼克
将ListView.SelectedItem
属性绑定到ViewModel中Record
类型的属性(例如SelectedRecord
),并在选中时执行您的工作记录变化:
<ListView ....
SelectedItem="{Binding SelectedRecord}"/>
ViewModel:
private Record _selectedRecord;
public Record SelectedRecord
{
get { return _selectedRecord; }
set
{
_selectedRecord = value;
OnPropertyChanged();
// Call your DoWork() method here
this.DoWork();
}
}