Я был определен некоторые 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
Как установить SelectedItem
свойство ComboBox к SelectedProduct.DefaultVatRate
?
// does not work!!!
cbProductDefaultVatRate.SelectedItem = SelectedProduct.DefaultVatRate;
Спасибо за ответы!
Вам нужно убедиться, что реальный экземпляр объекта, стоящий за SelectedProduct. DefaultVatRate
является тем же экземпляром, что и тот, который является частью списка, возвращаемого new VatRateRepository().GetAll()
или object.Equals()
должен возвращать true
для двух экземпляров.
Хотите получить такую двустороннюю привязку?
<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>