私の目標は、XAML リソース ファイルから取得するObservableCollection<Color>
ことですが、.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)
私は何か間違ったことをしていますか、それとも明らかな何かを見逃していますか?