je reçois exception lorsque les ressources racontons dans cet ordre:Exception levée lorsque l'ordre de déclaration des ressources a changé
<Window.Resources>
<sys:Object x:Key="resourceA"></sys:Object>
<x:Array x:Key="resourceB" Type="sys:String">
<sys:String>foo</sys:String>
</x:Array>
</Window.Resources>
et quand déclarer cette façon, tous les travaux:
<Window.Resources>
<x:Array x:Key="resourceB" Type="sys:String">
<sys:String>foo</sys:String>
</x:Array>
<sys:Object x:Key="resourceA"></sys:Object>
</Window.Resources>
Exception levée est:
Impossible de convertir la valeur dans l'attribut 'ItemsSource' à l'objet du type 'System.Collections.IEnumerable'. 'System.Windows.Markup.ArrayExtension' n'est pas une valeur valide pour la propriété 'ItemsSource'. Erreur à l'objet 'System.Windows.Controls.ComboBox' dans fichier de balisage 'WpfResourcesBug, composant/Window1.xaml' ligne 18 Position 37.
code complet:
<Window x:Class="WpfResourcesBug.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<sys:Object x:Key="resourceA"></sys:Object>
<x:Array x:Key="resourceB" Type="sys:String">
<sys:String>foo</sys:String>
</x:Array>
</Window.Resources>
<StackPanel>
<ComboBox SelectedIndex="0" ItemsSource="{StaticResource resourceB}" />
</StackPanel>
</Window>
J'ai essayé {Binding Source = {Ressource StaticResourceB}}, mais je n'ai obtenu aucun élément dans la liste déroulante. L'exception n'est pas levée, mais le problème n'est pas résolu. Et encore une fois, si l'ordre de déclaration des ressources a changé, cela fonctionne bien dans les deux cas. – alex2k8
Je pense que cela revient à l'Array n'étant pas résolu en une collection énumérable. Fondamentalement, c'est d'où provient votre message d'erreur précédent. Avez-vous pensé à utiliser l'approche ObjectDataProvider? Quelque chose comme http://www.codeproject.com/KB/WPF/FillComboboxWSortedEnum.aspx – bioskope
Si nous supprimons simplement resourceA, le tableau a été résolu avec succès en une collection énumérable. Le problème est donc non dans Array lui-même, mais dans resourceA, et même dans l'ordre de déclaration. C'est ce qui ne fait pas de différence pour moi. – alex2k8