Значение TextBlock привязки WPF для отображения SelectedItem в ComboBox - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть ComboBox и пара полей TextBlock.

Я хочу отобразить свойства SelectedItem из ComboBox для этих Textblock's. Изображение

Так что при выборе одного из нескольких пользователей свойства в TextBlock будут обновлены до свойств SelectedItem. Я нашел пример , хотя он использует silverlight и не работает полностью.

        <ComboBox Grid.Row="0"
                  Grid.Column="0"
                  VerticalAlignment="Bottom"
                  VerticalContentAlignment="Center"
                  HorizontalContentAlignment="Left"
                  Margin="0"
                  Height="40"
                  Name="ComboBox" 
                  ItemsSource="{Binding UserModels}" 
                  SelectedItem="{Binding EnteredUserModel, Mode=TwoWay}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FirstName}"
                               Style="{StaticResource ResourceKey=ComboBoxItemTextBlock}"/>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
    </Grid>


        <TextBlock Grid.Row="1"
                   Grid.Column="0"
                   Margin="0 10 0 10" >
            <Run Text="{DynamicResource firstName}" />
            <Run Text=": " />
            <Run Text="{Binding ElementName=ComboBox, Path=SelectedItem, UpdateSourceTrigger=PropertyChanged}" />
        </TextBlock>

Это то, что я пробовал. Я добавил Name к ComboBox, чтобы я мог получить доступ к SelectedItem в моем TextBlock. Мне нужно получить SelectedItem.firstname, et c. На этом этапе я могу получить доступ только ко всем объектам.

Мне не хватает какой-нибудь полезной привязки?

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Чтобы отобразить свойство FirstName SelectedItem, просто используйте соответствующий путь свойства, то есть SelectedItem.FirstName:

<Run Text="{Binding ElementName=ComboBox, Path=SelectedItem.FirstName}" />

или, поскольку SelectedItem связан с EnteredUserModel свойство в вашем представлении модель:

<Run Text="{Binding Path=EnteredUserModel.FirstName}" />

Установка UpdateSourceTrigger=PropertyChanged не обязательна. Это не влияет на привязку OneWay.

0 голосов
/ 03 февраля 2020

Вы получаете объект EnteredUserModel, потому что это выбранный элемент ComboBox. Если вы хотите, чтобы отображаемый текст был привязан к свойству FirstName-Property.

В качестве альтернативы вы можете связать с EnteredUserModel.FirstName в вашем TextBox

...