2009-03-31 12 views
1

I Ausnahme, wenn declare Ressourcen in dieser Reihenfolge erhalten:Ausnahme ausgelöst, wenn die Ressourcen der Reihenfolge der Deklaration geändert

<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> 

und wenn declare auf diese Weise, alle Werke:

<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> 

die Ausnahme ausgelöst wird:

Der Wert im Attribut 'ItemsSource' kann nicht in ein Objekt vom Typ konvertiert werden 'System.Collections.IEnumerable'. 'System.Windows.Markup.ArrayExtension' ist kein gültiger Wert für die Eigenschaft 'ItemsSource'. Fehler beim Objekt 'System.Windows.Controls.ComboBox' in Markup-Datei 'WpfResourcesBug; Komponente/Window1.xaml' Linie 18 Position 37.

Voll Code:

<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> 

Antwort

2

I denke, Sie könnten eine mögliche Lösung finden here

+0

Ich habe versucht {Binding Source = {StaticResource resourceB}}, aber keine Elemente in Combobox. Ausnahme wird nicht ausgelöst, aber das Problem ist nicht gelöst. Und wieder, wenn sich die Ressourcen-Deklarationsreihenfolge geändert hat, funktioniert es in beiden Fällen gut. – alex2k8

+0

Ich denke, es läuft wieder darauf hinaus, dass das Array nicht in eine aufzählbare Sammlung aufgelöst wird. Im Grunde stammt das, wo Ihre vorherige Fehlermeldung stammt. Haben Sie über den ObjectDataProvider-Ansatz nachgedacht? Etwas wie http://www.codeproject.com/KB/WPF/FillComboboxWSortedEnum.aspx – bioskope

+0

Wenn wir nur resourceA entfernen, wurde das Array erfolgreich in eine aufzählbare Sammlung aufgelöst. Das Problem ist also nicht in Array selbst, sondern in Ressource A und sogar in der Deklarationsreihenfolge. Das macht keinen Sinn für mich. – alex2k8

Verwandte Themen