将文本框链接到组合框 - 无法正常工作

时间:2014-06-24 12:35:28

标签: wpf xaml binding

我有一个带有组合框的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"/>

1 个答案:

答案 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}" />