我尝试从按钮调用选定的列表框项,而不是wpf中的listbox.selecteditemchanged
方法。所以当我尝试
string yadda = listbox.SelectedItem.ToString();
我得到一个例外:
调用线程无法访问此对象,因为另一个线程拥有它。
所以,我试图做的是以下几点:
Dispatcher.BeginInvoke(() =>
{
lbxSelectedItem = (lbxFileList.SelectedItem as TextBlock).Text;
});
这不起作用,因为我得到另一个例外:
无法将lambda表达式转换为'System.Delegate'类型,因为它不是委托类型
答案 0 :(得分:25)
将lambda转换为Action
:
Dispatcher.BeginInvoke((Action)(() => { /*DoStuff*/ }));
或者从lambda构建一个:
Dispatcher.BeginInvoke(new Action(() => { /*DoStuff*/ }));
您可能可以为Dispatcher
编写一个Action
的扩展方法,这样就可以隐式转换lambda。