我已经定义了一些ComboBox
元素:
<ComboBox Height="27" Margin="124,0,30,116" Name="cbProductDefaultVatRate" VerticalAlignment="Bottom" ItemsSource="{Binding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Label Height="26" Content="{Binding Path=Value}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
并设置VatRate
类型的组件项的数据源:
private void ShowAllVatRates()
{
cbProductDefaultVatRate.Items.Clear();
cbProductDefaultVatRate.ItemsSource = new VatRateRepository().GetAll();
}
VatRate
对象有一个属性:
private Product SelectedProduct
{
get; set;
}
产品在哪里包含VatRate
:
SelectedProduct.DefaultVatRate
如何将ComboBox的SelectedItem
属性设置为SelectedProduct.DefaultVatRate
?
// does not work!!!
cbProductDefaultVatRate.SelectedItem = SelectedProduct.DefaultVatRate;
感谢您的回答!
答案 0 :(得分:1)
您是否希望获得这样的TwoWay绑定?
<ComboBox Height="27" Margin="124,0,30,116" Name="cbProductDefaultVatRate" VerticalAlignment="Bottom"
ItemsSource="{Binding}"
SelectedItem="{Binding SelectedProduct.DefaultVatRate, Mode=TwoWay}>
<ComboBox.ItemTemplate>
<DataTemplate>
<Label Height="26" Content="{Binding Path=Value}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
答案 1 :(得分:1)
您需要确保SelectedProduct.DefaultVatRate
后面的实际对象实例与new VatRateRepository().GetAll()
返回的列表中的实际对象实例相同,或object.Equals()
必须返回{{1}这两个实例。