Ren*_*ene 6 wpf binding wpf-controls staticresource
给出以下代码:
<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>
Run Code Online (Sandbox Code Playgroud)
在这个例子中,
<ListBox ItemsSource="{StaticResource myCol}" />
Run Code Online (Sandbox Code Playgroud)
给我一个错误,抱怨它无法绑定到"CollectionViewSource"对象.
但是另一个列表框:
<ListBox ItemsSource="{Binding Source={StaticResource myCol}}" />
Run Code Online (Sandbox Code Playgroud)
结合完美.
所以我的问题是为什么一个工作而另一个不工作?最后,是不是两个ItenSources都设置为相同的"CollectionViewSource"对象?
谢谢.
ItemsSource属性的类型为IEnumerable.CollectionViewSource不是IEnumerable.CollectionViewSource的View属性将为您提供IEnumerable.
绑定到CollectionViewSource时,Binding非常智能,可以抓取View属性并实际绑定到该属性.也许CollectionViewSource上有一个[DefaultBindingProperty].
它归结为这样一个事实:当你完成Binding时,你实际上并没有绑定到CollectionViewSource,而是它的View属性.