资源声明顺序更改时抛出异常

时间:2009-03-31 23:48:20

标签: wpf resources

按以下顺序声明资源时出现异常:

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

当以这种方式宣布时,所有工作:

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

抛出的异常是:

  

无法转换属性中的值   'ItemsSource'到类型的对象   'System.Collections.IEnumerable'。   'System.Windows.Markup.ArrayExtension'   不是财产的有效值   '的ItemsSource'。对象出错   'System.Windows.Controls.ComboBox'中   标记文件   'WpfResourcesBug;组件/ window1.xaml'   第18行第37位。

完整代码:

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

1 个答案:

答案 0 :(得分:2)

我想你可能会找到一个可能的解决方案here