gpt4 book ai didi

WPF ListBox ItemsSource StaticResource/Binding 问题

转载 作者:行者123 更新时间:2023-12-04 13:46:28 25 4
gpt4 key购买 nike

给定以下代码:

<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}" />

给我一个错误,提示它无法绑定(bind)到“CollectionViewSource”对象。

但另一个列表框:
<ListBox ItemsSource="{Binding Source={StaticResource myCol}}" />

结合得很好。

所以我的问题是为什么一个有效而另一个无效?最后,不是两个 ItenSources 都设置为相同的“CollectionViewSource”对象吗?

谢谢你。

最佳答案

ItemsSource 属性的类型为 IEnumerable。 CollectionViewSource 不是 IEnumerable。 CollectionViewSource 的 View 属性会给你一个 IEnumerable。

当您绑定(bind)到 CollectionViewSource 时,Binding 足够智能以获取 View 属性并实际绑定(bind)到该属性。也许 CollectionViewSource 上有一个 [DefaultBindingProperty] 。

归结为这样一个事实:当您通过 Binding 时,您实际上并没有绑定(bind)到 CollectionViewSource,而是绑定(bind)到它的 View 属性。

关于WPF ListBox ItemsSource StaticResource/Binding 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1441517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com