Silverlight-在使用BusyIndicator渲染列表框时阻止屏幕

Silverlight-在使用BusyIndicator渲染列表框时阻止屏幕,silverlight,silverlight-3.0,listbox,busyindicator,Silverlight,Silverlight 3.0,Listbox,Busyindicator,我有一个列表框,它由一个BusyIndicator包装。列表框相当重,有时可能需要4或5秒才能渲染 我想知道在ListBox呈现时使用BusyIndicator阻止UI的最佳方法是什么 编辑:对不起,我没有把我的问题说清楚。。。请注意,列表框的ItemsSource已绑定到viewmodel中的ObservableCollection。此集合填充速度很快。我想真正让一切变慢的是UI呈现,因为ListBox包含非常复杂的定制ListBoxItems 列表框的ItemsPanel也是一个包装。它不像

我有一个列表框,它由一个BusyIndicator包装。列表框相当重,有时可能需要4或5秒才能渲染

我想知道在ListBox呈现时使用BusyIndicator阻止UI的最佳方法是什么

编辑:对不起,我没有把我的问题说清楚。。。请注意,列表框的ItemsSource已绑定到viewmodel中的ObservableCollection。此集合填充速度很快。我想真正让一切变慢的是UI呈现,因为ListBox包含非常复杂的定制ListBoxItems


列表框的ItemsPanel也是一个包装。它不像默认的VirtualisingStackPanel,所以我想这可能是一个ListBox性能问题?

这基本上就是您可以做到的

XAML文件

<toolkit:BusyIndicator HorizontalAlignment="Left" VerticalAlignment="Top"
    x:Name="m_BusyIndicator">
    <ListBox Width="200" Height="300" x:Name="m_ListBox"/>
</toolkit:BusyIndicator>

如果您不想使用该工具包,可以使用我对该问题的回答:


如果要锁定整个UI,则需要使用忙指示器包装整个控件布局启动内容。

我将BusyIndicator作为根元素。谢谢,但在我的情况下,我必须使用此BusyIndicator.:(我不认为是项目资源拖慢了进度。请参考我调整后的问题。谢谢。)
public MainPage()
{
    // Required to initialize variables
    InitializeComponent();
    InitializeListBox();
}

private void InitializeListBox()
{
    m_BusyIndicator.IsBusy = true;
    m_ListBox.ItemsSource = null; // Load your data (mayby async) when done call OnListBoxItemsLoaded()
}

private void OnListBoxItemsLoaded()
{
    m_BusyIndicator.IsBusy = false;
}