Dato il seguente codice:WPF ListBox ItemsSource StaticResource/domanda Binding
<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>
In questo esempio, il
<ListBox ItemsSource="{StaticResource myCol}" />
mi dà un errore dice che non è in grado di legarsi a un oggetto "CollectionViewSource".
Ma l'altra casella di riepilogo:
<ListBox ItemsSource="{Binding Source={StaticResource myCol}}" />
lega perfettamente bene.
Quindi la mia domanda è: perché uno lavora e l'altro no? Alla fine, non sono entrambe le ItenSources impostate sullo stesso oggetto "CollectionViewSource"?
Grazie.
Grazie Mike. Capisco qual è il problema. La mia domanda era davvero più orientata al perché Binding si prendesse la libertà di scegliere semplicemente una proprietà dall'oggetto "CollectionViewSource" e si limitasse a questo? Voglio dire, perché l'estensione "StaticResource" non si sta prendendo la libertà di fare la stessa cosa? – Rene
Tipo di supposizione, ma StaticResource sta solo dicendo "fammi questa cosa", dove Binding sta dicendo "fammi qualcosa che posso legare". StaticResource è più letterale. Non ha contesto di utilizzo, mentre con Binding il sistema sa perché stai chiedendo la risorsa. Il libro di Chris Anderson, "Essential WPF", penso. Descrive l'ordine delle cose che accadono quando un legame non riesce a capire esattamente cosa fare. Non ce l'ho a portata di mano, ma proverò a cercarlo. Potrebbe dire cosa succede in questo caso. –