私は、それぞれ0と2である最小値と最大Block
値を含む設定オブジェクトを有するComboBoxにオブジェクトをバインドする方法は変わりますが、別のオブジェクトを更新する方法はありますか?
public int Block {get;set;}
が含まZone
オブジェクトを持っています。
有効な値の範囲でコンボボックスを表示する必要がありますが、選択した値をBlock
にバインドする必要があります。
これを行うには、どのような方法が最適ですか?
私は次のことをしようとしてきた:ComboBoxControlと
var blocks = new Dictionary<string, int>();
for (int i = _currentZone.Constraints.Block.Min; i <= _currentZone.Constraints.Block.Max; i++)
{
blocks.Add("Block " + i, i);
}
var blocksCombo = new ComboBoxControl(blocks, GetCurrentBlockValue());
public ComboBoxControl(Dictionary<string, int> comboItems, int? selectedValue)
{
InitializeComponent();
cboItems.ItemsSource = comboItems;
cboItems.SelectedValue = selectedValue;
}
と
combo_SelectionChanged
イベントがI手動でトリガされ
<Grid>
<ComboBox x:Name="cboItems"
SelectionChanged="combo_SelectionChanged"
Height="25"
SelectedValuePath="Value">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Key}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
として定義XAMLのように定義Block
の値を更新してください。これは理想的ではありません。
コンボボックスを辞書の項目で設定することができますが、選択した項目を変更すると値が別のオブジェクト(Block
)にバインドされます。これは可能ですか?
この場合、どうすれば実装できますか?そうでない場合は、私が現在やっていることよりも、これについてもっと良い方法がありますか?私はそれはあなたが持っているXAML変えるのと同じくらい簡単だと信じ