WPF Listbox 항목 STATICRESOURCE/바인딩 질문
-
10-07-2019 - |
문제
다음 코드가 주어지면 :
<Window x:Class="WpfApplication76.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<CollectionViewSource x:Key="myCol">
<CollectionViewSource.Source>
<col:ArrayList>
<ListBoxItem>Uno</ListBoxItem>
<ListBoxItem>Dos</ListBoxItem>
<ListBoxItem>Tres</ListBoxItem>
</col:ArrayList>
</CollectionViewSource.Source>
</CollectionViewSource>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{StaticResource myCol}" />
<ListBox ItemsSource="{Binding Source={StaticResource myCol}}" />
</Grid>
</Window>
이 예에서
<ListBox ItemsSource="{StaticResource myCol}" />
"CollectionViewSource"객체에 바인딩 할 수 없다고 불평하는 오류를 제공합니다.
그러나 다른 목록 상자 :
<ListBox ItemsSource="{Binding Source={StaticResource myCol}}" />
완벽하게 묶습니다.
그래서 내 질문은 왜 한 것이 작동하고 다른 하나는 그렇지 않습니까? 결국, 동일한 "CollectionViewSource"객체로 설정되지 않습니까?
고맙습니다.
해결책
항목 소스 속성은 유형의 ienumerable입니다. CollectionViewSource는 ienumerable이 아닙니다. CollectionViewSource의 View 속성은 귀하에게 ienumerable을 제공합니다.
CollectionViewSource에 묶을 때 바인딩은 뷰 속성을 잡고 실제로 바인딩 할 수있을만큼 똑똑합니다. CollectionViewSource에는 [DefaultBindingProperty]가있을 수 있습니다.
바인딩을 통과 할 때 실제로 CollectionViewSource에 바인딩하는 것이 아니라 뷰 속성에 묶여 있다는 사실로 요약됩니다.
제휴하지 않습니다 StackOverflow