从其他线程访问/更改UI元素属性
本文关键字:UI 元素 属性 更改 其他 线程 访问 | 更新日期: 2023-09-27 18:20:28
可能重复:
Dispatcher对象在WPF中有什么用途?
很抱歉问一个似乎很常见的问题,但我遇到了一个问题,线程试图访问UI对象,但由于"其他线程拥有它们"而失败。
我读过很多关于这方面的文章,但我一直找不到任何具体的东西来帮助我,而且我对线程和线程太陌生了,无法理解答案,也无法从我找到的来源中提取我需要的知识。
我现在的代码是这样的:
void Sc_OnDataSetFilled()
{
ddlSelectGraph.SelectedIndex = 0;
this.DataContext = App.Sc.PepperOverview;
}
它是一个事件处理程序,当成功填充DataSet
时,它会在代码的其他地方触发。完成此操作后,我希望ComboBox
ddlSelectGraph
的SelectedIndex
发生更改,因为UI元素属于不同的线程,所以代码会在此处中断。
当调试器尝试设置页面的DataContext
属性时,也会出现同样的问题,因为我前面谈到的DataSource
也是其他线程的一部分。
有人能给我一些防白痴的建议吗?或者请给我一些建议?
this.Dispatcher.Invoke(new Action<object>((context) =>
{
this.DataContext = context; // your implementation goes here
}),
new object[1]
{
"you object" // the object(s) you'd like to pass in
});