问题描述
在WPF MVVM解决方案中,我正在使用后台工作程序,以便在获取一些数据并填充(telerik)树视图时显示繁忙的指示符。当我加载(父)用户控件(包含TreeView和RadBusyIndicator)时,我正在尝试执行此操作:
private void UserControl_Loaded(object sender,RoutedEventArgs e)
{
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork += (object sender_,DoWorkEventArgs e_) =>
{
GetData();
};
bg.RunWorkerCompleted += (object sender_,RunWorkerCompletedEventArgs e_) =>
{
TreeView.ExpandAll();
IsBusy = false;
};
IsBusy = true;
bg.RunWorkerAsync();
}
数据获取工作正常,并且树视图的itemssource正常设置。
除了TreeView.ExpandAll()
之外,其他所有功能都正常。
XAML代码:
出现树视图的顶部节点,但基础项目未展开。我必须单击它们将其打开(效果很好)。知道为什么树视图没有扩展吗?我该怎么做才能使这项工作成功?
解决方法
TreeView.ExpandAll()可能需要从UI线程中调用。试试:
Application.Current.Dispatcher.Invoke(() => TreeView.ExpandAll());
假设不是从UI线程创建BackgroundWorker。如果这样的话,看来您的代码应该可以工作。