dar*_*ard 13 c# wpf lambda delegates
我试图从按钮调用选定的列表框项,而不是listbox.selecteditemchanged
wpf中的方法.所以,当我尝试
string yadda = listbox.SelectedItem.ToString();
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
调用线程无法访问此对象,因为另一个线程拥有它.
所以,我想要做的是以下内容:
Dispatcher.BeginInvoke(() =>
{
lbxSelectedItem = (lbxFileList.SelectedItem as TextBlock).Text;
});
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我得到另一个例外:
无法将lambda表达式转换为类型'System.Delegate',因为它不是委托类型
H.B*_*.B. 26
将lambda转换为Action
:
Dispatcher.BeginInvoke((Action)(() => { /*DoStuff*/ }));
Run Code Online (Sandbox Code Playgroud)
或者从lambda构造一个:
Dispatcher.BeginInvoke(new Action(() => { /*DoStuff*/ }));
Run Code Online (Sandbox Code Playgroud)
你也许可以写为扩展方法Dispatcher
接受一个Action
,这样的拉姆达会被隐式转换.