以前は、DataGridに変換しようとしているObservableCollectionオブザーバブルオブジェクトのプロパティを表示していました。私はそのほとんどが働いていますが、現在ComboBoxで表されている特定のプロパティ(Status)の変更を見ていくつかの問題があります。アイデアは、 "Alive、Dead、Poisoned"などのようなものを表すenumのセットの間で "Status"値をオーバーライドできるようにすることです。ComboBoxが閉じられ、そのハンドラ内でEventHandlerを接続しました。送信者オブジェクトをPlayerとして取得して、有効なプレーヤーの値を送信することができます。DropTownClosedイベントハンドラからDataGrid内のComboBox DataTemplateから現在選択されているアイテムを取得しようとしています
ここでは、DataTemplateを使用してComboBoxを作成するXAMLのスニペットを示します。イベントハンドラ内
<DataGridTemplateColumn Header="Status">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Name="cbStatus"
ItemsSource={Binding Source={StaticResource statusTypes}}"
SelecteItem="{Binding statusType, Mode=TwoWay}"
DropDownClosed="cbStatusType_DropDownClosed"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
は、私はGUIの特定の行から戻ってきた値をもとに、「プレーヤー」のオブジェクトを試みるとつかむために、以下の使用しています。コンボボックスが閉じ、新しい値が選択されたときに、私は新しいplayerOverriddenをデバッグしていたときに
Player playerOverridden = (Player)(sender as FrameworkElement).DataContext;
しかし、私はplayerOverriddenで捕獲され、その値が表示されません。
これは、GridViewColumn.CellTemplatesを使用してListViewで行っていた作業とほぼ同じですが、うまくいきました。ステータス値が、コンボボックスからプレーヤーが選択したものではなく、最初に設定されたものに戻っている理由がわかりません。