2010-08-12 2 views
2

BusyIndicator로 래핑 된 ListBox가 있습니다. ListBox는 꽤 무겁습니다. 렌더링하는 데 4 ~ 5 초가 걸릴 수 있습니다.Silverlight - BusyIndicator를 사용하여 ListBox를 렌더링하는 동안 화면 차단

ListBox가 렌더링되는 동안 BusyIndicator를 사용하여 UI를 차단하는 가장 좋은 방법은 무엇일까?

편집 : 죄송합니다. 제 질문을 명확히하지 않았습니다 ... ListBox의 ItemsSource가 viewmodel의 ObservabaleCollection에 바인딩되어 있음을 유의하십시오. 이 colletion은 빨리 채워집니다. ListBox가 꽤 복잡한 사용자 지정 ListBoxItems를 포함하므로 UI ​​렌더링이 모든 것을 실제로 느리게한다는 것을 알 수 있습니다.

또한 ListBox의 ItemsPanel은 WrapPanel입니다. 그것은 기본 VirtualisingStackPanel 같은 아니에요, 그래서 이것은 ListBox 성능 문제가 될 수있을 것 같아?

답변

1

이것은 기본적으로 어떻게 할 수 있습니까?

XAML 파일

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

CS 파일

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; 
} 
+0

나는 물건을 느리게하는 ItemsSource라고 생각하지 않습니다. 제 조정 된 질문을 참조하십시오. 감사. :) –

0

당신은 당신이이 질문에 대한 내 대답을 사용할 수있는 툴킷을 사용하지 않으려면 :

WPF - Loading image to show page loading status

+0

고마워요.하지만 제 경우에는이 BusyIndicator를 사용해야합니다. : ( –

0

전체 UI를 잠 그려면 전체 컨트롤 layoutroot를 래핑해야합니다. 통화 중 표시기가있는 NT.

+0

나는 내 루트 요소로 BusyIndicator를 가지고있다. –

관련 문제