WPF 绑定 TextBlock 值以在 ComboBox 中显示 SelectedItem
WPF Binding TextBlock value to display SelectedItem in ComboBox
我有一个 ComboBox
和几个 TextBlock
字段。
我想在 Textblock's
上显示 ComboBox
中 SelectedItem
的属性。 Image
因此,当我选择多个用户之一时,TextBlock
中的属性将更新为 SelectedItem
中的属性。我找到了一个 example,虽然它使用的是 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
。它对单向绑定没有影响。
您将获得 EnteredUserModel
-Object,因为它是 ComboBox
的选定项目。如果您想要显示的文本,您必须绑定到 FirstName-属性。
或者您可以在 TextBox
中绑定到 EnteredUserModel.FirstName
我有一个 ComboBox
和几个 TextBlock
字段。
我想在 Textblock's
上显示 ComboBox
中 SelectedItem
的属性。 Image
因此,当我选择多个用户之一时,TextBlock
中的属性将更新为 SelectedItem
中的属性。我找到了一个 example,虽然它使用的是 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
。它对单向绑定没有影响。
您将获得 EnteredUserModel
-Object,因为它是 ComboBox
的选定项目。如果您想要显示的文本,您必须绑定到 FirstName-属性。
或者您可以在 TextBox
EnteredUserModel.FirstName