現在選択されている行の値を設定できるようにしたいと思いDataGrid
ますComboBox
。
私が持っているコードはセッター部分で正常に動作していますが、選択した値をグリッド値と一致させることはできませんComboBox
...マッピングが不足しているようです。
ここに私が持っているものがあります:
1- Datagrid は次のようにバインドされていObservableCollection<Object>
ます:
<DataGrid ItemsSource="{Binding}"
SelectedItem="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}, AncestorLevel=2},
Path=SelectedCounterparty, Mode=TwoWay}">
2-ObservableCollection<Object>
コンボボックスにバインドする必要があるプロパティがあります(つまり、コンボボックスで選択されたアイテムはそのプロパティ値を取る必要があります):
public CurrenciesEnum Ccy
{
get { return this._ccy; }
set
{
if (value != this._ccy)
{
this._ccy = value;
NotifyPropertyChanged("Ccy");
}
}
}
3- Combobox ソースは列挙型です:
public enum CurrenciesEnum { USD, JPY, HKD, EUR, AUD, NZD };
4- コンボボックスの現在のマッピング:
<ObjectDataProvider x:Key="Currencies" MethodName="GetNames" ObjectType="{x:Type System:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="ConfigManager:CurrenciesEnum" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ComboBox ItemsSource="{Binding Source={StaticResource Currencies}}" SelectedItem="{Binding Ccy, Mode=TwoWay}"/>
機能: ComboBox を使用して、グリッドで現在選択されている項目の「Ccy」プロパティを設定できます。
正しくないもの: ComboBox で選択された項目は、行を変更するときにグリッドで現在選択されている項目と一致しません (また、USD または以前に選択された値にデフォルト設定されます)。つまり、適切にバインドされていないようです。これを修正する方法についてのアイデア