WPF ListBoxItem事件
其中一个问题是:“为什么这么难?” 我有一个WPF ListBoxItem事件,wpf,mvvm,listboxitem,Wpf,Mvvm,Listboxitem,其中一个问题是:“为什么这么难?” 我有一个列表框(包含股票投资组合的详细信息)。列表框项使用网格显示投资组合的属性。源是视图模型中的投资组合列表 ListBox为多选-当选择更改时,将重新填充所选投资组合的组成部分列表 我想做的是在listboxitem上放置一个按钮(或菜单或任何东西),以显示可能的操作列表(交易、合并、删除等) 当一个动作被选中时,我需要对相应的公文包执行该动作。理想情况下,我希望这些动作对选中和未选中的项目都可用 我可以处理该事件,但如何检测用户选择的项目(公文包)?我已
列表框
(包含股票投资组合的详细信息)。列表框项使用网格显示投资组合的属性。源是视图模型中的投资组合列表
ListBox
为多选-当选择更改时,将重新填充所选投资组合的组成部分列表
我想做的是在listboxitem上放置一个按钮(或菜单或任何东西),以显示可能的操作列表(交易、合并、删除等)
当一个动作被选中时,我需要对相应的公文包执行该动作。理想情况下,我希望这些动作对选中和未选中的项目都可用
我可以处理该事件,但如何检测用户选择的项目(公文包)?我已经查看了GotFocus(),但它似乎没有启动
换句话说,如果Listboxitem中的一个控件触发了一个事件,那么该事件如何“知道”是哪个
Listboxitem
引发了它?对于我来说,这里的解决方案,正如您提到的MVVM,应该是让ListBox
由一组视图模型填充,例如ObservableCollection
之类的东西
然后将按钮的命令
属性绑定到ViewModel上的ICommand
,该命令执行您需要执行的任何工作
我可以处理该事件,但如何检测用户选择的项目(公文包)?我已经查看了GotFocus()
,但它似乎没有触发
您可以将单击的按钮的DataContext
强制转换到te列表框中的相应对象,例如:
private void DeleteButton_Clicked(object sender, RoutedEventArgs e)
{
Button deleteButton = sender as Button;
var portfolio = deleteButton.DataContext as Portfolio; //or whatever your type is called
//access any members of the portfolio...
}
我想我知道你是从哪里来的。目前listbox绑定到公文包类的一个集合,它只包含属性(Id、名称、值…),但没有理由该类不能包含方法或命令。我会把它旋转起来,看看它是否会飞起来。谢谢,Chris。