我有一个带有组合框的WPF用户控件。文本框。我希望文本框保存组合框中所选项的值,如果我在绑定路径中使用SelectedValue,它可以正常工作。但是,如果我尝试使用组合框的Title列(SelectedValue.Title),则会覆盖文本框的值,但不会显示任何内容。谁能告诉我我做错了什么?我的代码示例如下。我是新手,所以请善待:)
<ComboBox x:Name="ComboProject" Grid.Column="4" Grid.Row="0" TabIndex="14"
ItemsSource="{Binding Source={StaticResource Projects}, XPath=./Project}"
SelectedValuePath="@Item"
Tag="Project Number"
TextSearch.TextPath="@Item">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text= "{Binding XPath= @Item}" Width="90" />
<TextBlock Text= "{Binding XPath= @Title}" Width="220" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBox x:Name="loaded" Text="{Binding Path=SelectedValue.Title, NotifyOnSourceUpdated=True, ElementName=ComboProject}" Grid.Row="2" Grid.Column="4" Tag="Project Title" TabIndex="15"/>
答案 0 :(得分:1)
您设置了SelectedValuePath="@Item"
,这就是SelectedValue
现在拥有的内容。尝试将其设置为Title并直接绑定到SelectedValue:
<ComboBox x:Name="ComboProject"
ItemsSource="{Binding Source={StaticResource Projects}, XPath=./Project}"
SelectedValuePath="@Title">
<ComboBox.ItemTemplate>
...
</ComboBox.ItemTemplate>
</ComboBox>
<TextBox Text="{Binding SelectedValue, ElementName=ComboProject}" />
为了清楚起见,我删除了一些其他代码。
编辑:
好的,如果您想将SelectedValue
用于其他目的,我们可以将TextBox
绑定到SelectedItem
。如果Title
是所选XML节点的属性,那么我们可以像这样访问它:
<TextBox Text="{Binding SelectedItem.Attributes[Title].Value, Mode=OneWay, ElementName=ComboProject}" />