0

テーブルに新しいアイテムを追加しようとしていますが、以下のコードは InvalidCastException をスローしています。

これは、テーブルに新しいアイテムを追加するためのアイテムの追加ページからのものです。WineDate は DatePicker から取得され、WineStars は ListPicker から取得され、Category はテーブルにリンクされたリストピッカーから取得されます

WineItem newWineItem = new WineItem
            {
                WineDate = wineDatepurchasedTextbox.Value.Value.Date,
                WineComments = wineCommentsTextBox.Text,
                WineStars = (string)StarList.SelectedItem,
                WineType = wineTypeTextbox.Text,
                WineVinyard = wineVineyardTextbox.Text,
                WineYear = wineYearTextbox.Text,
                Category = (WineCategory)winecategoriesListPicker.SelectedItem

            };

さらに詳しい情報が必要な場合はお知らせください。

4

2 に答える 2

2

2 つのキャストのみを実行しています。 a にキャストし、 StarList.SelectedItemastringにキャストwinecategoriesListPicker.SelectedItemしていWineCategoryます。デバッガーをアタッチし、これらの値が実際に何であるかを確認して、何が間違っているかを判断する必要があります。

WineItem(これは、プロパティ セッターのいずれもキャストを実行しないことを前提としていますが、最初に明白な解決策を探します。)

于 2013-01-20T23:31:08.293 に答える
0
Category = (WineCategory)winecategoriesListPicker.SelectedItem

winecategoriesListPicker.SelectedItemが WineCategory を継承するクラスである場合、これを行うことができます。それ以外の場合は、そのようなクラスを宣言するか、 の型を受け入れるコンストラクターを作成する必要がありwinecategoriesListPicker.SelectedItemます。

Category = new WineCategory(winecategoriesListPicker.SelectedItem);
于 2013-01-20T23:58:19.703 に答える