エラー メッセージは、listAmount.Items[i]
が type のインスタンスを返すことを説明していますListBoxItem
。そのクラスは から派生しContentControl
ているため、そのContent
プロパティには探している実際の値が含まれている必要があります。
したがって、試してください:
sum += Convert.ToInt32(((ListBoxItem)listAmount.Items[i]).Content);
のインデクサーItemCollection
は に型指定されるため、型キャストが必要ですobject
。
そうは言っても、コレクション (例: ObservableCollection<int>
) を使用して値を保存し、そのコレクションをItemsSource
リストボックスの として設定しようとしましたか? その後、何も変換する必要なく、コレクションから整数値を直接取得して合計できます。
この宣言をウィンドウに追加して、整数値のリストを保存します。
private readonly ObservableCollection<int> values = new ObservableCollection<int>();
次に、 を呼び出した後、次のプロパティInitializeComponents
を割り当てます。ItemsSource
listAmount.ItemsSource = values;
values
いつでも好きなときにリストに値を追加したり、リストから値を削除したりできます。リストの内容は常にリストボックスに反映されます。
これらの値の合計を取得するには、次のように単純に使用できます。
int sum = values.Sum();
System.Linq
これを機能させるには、名前空間using
をディレクティブに含める必要があることに注意してください。そうしないと、Sum
メソッドが見つかりません。)