在WPF中为ComboBox组件设置SelectedItem

时间:2010-05-24 17:57:06

标签: c# wpf data-binding combobox selecteditem

我已经定义了一些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;

感谢您的回答!

2 个答案:

答案 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}这两个实例。