3

使用可能なシステム カラーにデータバインドされたコンボボックスがあります。ユーザーが色を選択すると、次のコードが実行されます。

private void cboFontColour_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Color colour = (Color)(cboFontColour.SelectedItem);
}

これにより、キャスト例外がスローされ、「指定されたキャストは無効です」というメッセージが表示されます。デバッガーで cboFontColour.SelectedItem にカーソルを合わせると、常に Color オブジェクトになります。

システムがカラーからカラーにキャストできないように見える理由がわかりません。助けが必要です。

4

4 に答える 4

0

直接の型変換ではなく、常にisandを使用する必要があります。asさらに、Color が実際にデバッガーに表示されるタイプと同じであることを確認してください。

于 2010-04-15T10:58:29.827 に答える
0

利用可能なシステム カラーへのバインドをどのように設定しましたか? クラスの静的プロパティを使用している場合は、SystemColorsクラスの名前にかかわらず、これらのエントリのすべてが Color オブジェクトではないことに注意してください (ただし、SolidColorBrushes と ResourceKeys も同様です)。あなたはいつでもできる

    MessageBox.Show(cboFontColour.SelectedItem.GetType().ToString());
    // or
    MessageBox.Show(cboFontColour.SelectedValue.GetType().ToString());

タイプを確認します。

于 2010-04-15T11:14:27.970 に答える
0

ああ、やっと解決しました。関数が実際に返したのは、Color ではなく DependancyProperty でした。どうしてそんなに長い間見逃したのかわからない

于 2010-05-15T12:15:58.423 に答える