WPF:数据绑定和组合框

时间:2010-03-20 06:59:50

标签: wpf binding

我有两个班级

Company
    CompanyKey
    CompanyName

Person
    FirstName
    LastName
    CompanyKey

组合框中的列表项绑定到CompanyObjects的集合。

如何将Combobox的选定项属性数据绑定到Person.CompanyKey属性?

2 个答案:

答案 0 :(得分:1)

如果我已正确理解您的问题,这里有一个演示应用程序来解释组合框的数据绑定:Demo App

希望这有帮助。
问候,
Mihir Gokani

编辑:代码示例中的片段

<Window
    x:Class="WpfApplication.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1"
    Height="300"
    Width="300">
    <StackPanel>

        <TextBlock
            Margin="10">Persons</TextBlock>
        <ComboBox
            x:Name="comboPersons"
            Height="25"
            Margin="10"
            ItemsSource="{Binding Persons}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel
                        Orientation="Horizontal">
                        <TextBlock
                            Text="{Binding FirstName}"
                            Margin="0,0,5,0" />
                        <TextBlock
                            Text="{Binding LastName}" />
                    </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

        <TextBlock
            Margin="10">Companies</TextBlock>
        <ComboBox
            x:Name="comboCompanies"
            Height="25"
            Margin="10"
            ItemsSource="{Binding Companies}"
            DisplayMemberPath="CompanyName"
            SelectedValuePath="CompanyKey"
            SelectedValue="{Binding SelectedItem.CompanyKey, ElementName=comboPersons}" />

    </StackPanel>
</Window>

答案 1 :(得分:0)

解决方案很简单,您需要使用IValueConverter将Company转换为Person对象。

有关IValueConverter的更多信息,请参阅: http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

然后你可以在你的xaml中绑定它,例如: {Binding Path = combox.SelectedItem,Converter = {StaticResource CompanyToPersonConvertor}}