我的目标是ObservableCollection<Color>
从 XAML 资源文件中检索出一个,但我使用的是 .NET 3.5,所以我不能直接在 XAML 中声明泛型类型。我目前的解决方案是在 XAML 中声明一个 Color 数组:
<x:Array Type="Color" x:Key="ColourPickerStandardColours">
<Color>#974806</Color>
<Color>#FF0000</Color>
<Color>#FFC000</Color>
...
<Color>#7030A0</Color>
</x:Array>
并在代码中检索它:
var standardColours = new ObservableCollection<Color>(
(Color[])TryFindResource("ColourPickerStandardColours"));
当我尝试运行它时,我得到了这个异常:
InvalidCastException
Unable to cast object of type 'System.Windows.Markup.ArrayExtension' to type
'System.Windows.Media.Color[]'.
ArrayExtension 有IList Items
,但我需要泛型IEnumerable<T>
来构造一个ObservableCollection<T>
. 我想我可以使用ProvideValue(IServiceProvider)
,但我不确定我应该传递给它什么。
我是在做错什么,还是只是遗漏了一些明显的东西?