문제

다음 코드가 주어지면 :

<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에 바인딩하는 것이 아니라 뷰 속성에 묶여 있다는 사실로 요약됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top