3

私の目標は、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)

私は何か間違ったことをしていますか、それとも明らかな何かを見逃していますか?

4

2 に答える 2

4

WPF はそこで型指定されていないコレクションを使用します。を使用するだけItems.Cast<Color> ()です。

于 2012-12-14T00:08:38.713 に答える
-1

ArrayExtension にキャストし、値は Items プロパティにあります

于 2012-12-13T21:49:18.103 に答える