我有一个用户控件,其中有一个类似2900项目的网格,我无能为力,这是企业想要的方式......显然这是加载/渲染速度慢,所以我使用Dispatcher在处理事件的视图模型(棱镜事件...不是标准的Windows事件)中创建了这个技巧。使用调度程序加载WPF中的用户控件
public void ShowPopUp(Type viewType)
{
var waitScreen = new Controls.Views.SampleView();
var popUp = new ShellBlank();
popUp.Content = waitScreen;
popUp.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
popUp.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, new Action(delegate() {
popUp.Content = container.Resolve(viewType);})
);
popUp.ShowDialog();
}
它工作得很好但是我SampleView(因为它是所谓的时刻)有一个在行列式进度条然而,它从来没有更新,就像你知道的 - 绿色巴回去和第四..这是它的XAML。
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label Margin="12" FontSize="16" Foreground="WhiteSmoke" Content="Loading... Please wait"/>
<ProgressBar Grid.Row="1" IsIndeterminate="True" Width="280" Height="24"/>
</Grid>
</Border>
这是否与调度程序不让它更新?
任何人曾经做过这样的事情?有什么建议?
谢谢!
呀 - 你是对的,我把一个按钮放在那里,你不能点击它......任何人都有任何想法,我怎么能让一些东西让用户知道发生了什么?就像动画或任何会保持响应的东西。我曾尝试过使用后台工作人员等...... – Kenn 2011-03-24 13:11:25
我能想到的唯一事情就是尝试将用户控件的创建分解成更小的部分,然后以低优先级分派每个部分。这将希望允许调度员在两者之间执行一些更高优先级的任务,即更新进度条。有人对调度程序的调度方式有了更多的了解,可能会说出这是否正确 – Scott 2011-03-24 23:59:36