我有一个Zone
对象,它包含如何将对象绑定到ComboBox,但在更改时更新其他对象?
public int Block {get;set;}
我也有包含最小和最大Block
值,其分别为0和2的结构对象。
我需要显示一个有效值范围的组合框,但我需要将选定的值绑定到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;
}
,并定义为
<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当combo_SelectionChanged
事件手动触发我更新Block
的值,这是不理想的。
我想要的是能够设置与字典中的项目组合框,但是当我更改所选项目时,值绑定到不同的对象 - Block
。这可能吗?
如果是这样,我该如何执行此操作?如果没有,我有更好的方式去做这件事比我现在做的更好吗?