Установка SelectedItem для компонента ComboBox в WPF - PullRequest
1 голос
/ 24 мая 2010

Был определен какой-то элемент 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;

Спасибо за ответы!

Ответы [ 2 ]

1 голос
/ 24 мая 2010

Необходимо убедиться, что фактический экземпляр объекта за SelectedProduct.DefaultVatRate совпадает с экземпляром, который является частью списка, возвращаемого new VatRateRepository().GetAll() или object.Equals(), должен возвращать true для двух экземпляров.

1 голос
/ 24 мая 2010

Хотите получить привязку 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>
...