[英]WPF Binding TextBlock value to display SelectedItem in ComboBox
我有一个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
以便我可以在TextBlock
访问它的SelectedItem
。 我需要获取 SelectedItem.firstname 等。在这个阶段我只能访问整个对象。
我错过了一些有用的绑定吗?
为了显示 SelectedItem 的FirstName
属性,只需使用适当的属性路径,即SelectedItem.FirstName
:
<Run Text="{Binding ElementName=ComboBox, Path=SelectedItem.FirstName}" />
或者,由于SelectedItem
绑定到您的视图模型中的EnteredUserModel
属性:
<Run Text="{Binding Path=EnteredUserModel.FirstName}" />
不需要设置UpdateSourceTrigger=PropertyChanged
。 它在 OneWay 绑定中无效。
您将获得EnteredUserModel
-Object,因为这是ComboBox
的选定项目。 如果您想要显示的文本,您必须绑定到 FirstName-Property。
或者,您可以绑定到TextBox
EnteredUserModel.FirstName
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.