WPF: привязка данных и поля со списком - PullRequest
0 голосов
/ 20 марта 2010

У меня есть два класса

Company
    CompanyKey
    CompanyName

Person
    FirstName
    LastName
    CompanyKey

Элементы списка в поле со списком привязаны к коллекции CompanyObjects.

Как связать выбранное свойство элемента Combobox со свойством Person.CompanyKey?

Ответы [ 2 ]

1 голос
/ 20 марта 2010

Если я правильно понял ваш вопрос, вот демонстрационное приложение, которое объясняет привязку данных в комбинированном окне: Демо-приложение

Надеюсь, это поможет.
С уважением,
Михир Гокани

РЕДАКТИРОВАТЬ: фрагмент из примера кода

<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>
0 голосов
/ 20 марта 2010

Решение простое, вам нужно использовать IValueConverter для преобразования в Company в объект Person.

Для получения дополнительной информации о IValueConverter, пожалуйста, смотрите: http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

Затем вы можете связать его в своем xaml с чем-то вроде: {Binding Path = combox.SelectedItem, Converter = {StaticResource CompanyToPersonConvertor}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...