をZone
含むオブジェクトがあります
public int Block {get;set;}
Block
また、それぞれ 0 と 2 の最小値と最大値を含む構成オブジェクトもあります。
有効な値の範囲で ComboBox を表示する必要がありますが、選択した値を にバインドする必要がありますBlock
。
これを行うための最良の方法は何ですか?
私は次のことを試してきました:
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());
ComboBoxControl を次のように定義
public ComboBoxControl(Dictionary<string, int> comboItems, int? selectedValue)
{
InitializeComponent();
cboItems.ItemsSource = comboItems;
cboItems.SelectedValue = selectedValue;
}
および XAML は次のように定義されます。
<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>
combo_SelectionChanged
イベントがトリガーされると、手動で値を更新しますBlock
が、これは理想的ではありません。
私が望むのは、辞書内のアイテムでコンボボックスを設定できるようにすることですが、選択したアイテムを変更すると、値は別のオブジェクトにバインドされます- Block
. これは可能ですか?
もしそうなら、どうすればこれを実装できますか?そうでない場合、私が現在行っていることよりも、これを行うためのより良い方法はありますか?