WPF 绑定列表框将选定的项目放入文本框中

WPF bind list box Selected item into textbox

我正在尝试将任何选定项目的名称放在列表框中旁边的文本框中。但是我遇到了麻烦。

这是我的一些代码:

    <DockPanel Margin="10">
        <StackPanel Margin="5" DockPanel.Dock="Left">
            <ListBox   Name="lbNames" DisplayMemberPath="Name" IsSynchronizedWithCurrentItem="True"/>
        </StackPanel>
        <StackPanel Margin="5" DockPanel.Dock="Right">
            <TextBox Name="txtName" Width="auto" Text="{Binding ElementName=lbNames,Path=SelectedItem}"/>
            <WrapPanel Margin="0,5" Orientation="Horizontal">
                <Button Margin="2,0" Name="btnAdd" Click="btnAdd_Click" Content="Add"/>
                <Button Margin="2,0"  Name="btnEdit" Click="btnChange_Click" Content="Edit"/>
                <Button Margin="2,0"  Name="btnDelete" Click="btnDelete_Click" Content="Delete"/>
            </WrapPanel>
        </StackPanel>
    </DockPanel>

因为您正在显示 Text="{Binding ElementName=lbNames,Path=SelectedItem}"并且您选择的项目是一个用户对象。 您可以使用类似的东西代替它。 首先将 SelectedValuePath="Name" 添加到您的列表框中。 然后使用 Text="{Binding ElementName=lbNames,Path=SelectedValue}"

 <DockPanel Margin="10">
    <StackPanel Margin="5" DockPanel.Dock="Left">
        <ListBox   Name="lbNames" DisplayMemberPath="Name" SelectedValuePath="Name" IsSynchronizedWithCurrentItem="True"/>
    </StackPanel>
    <StackPanel Margin="5" DockPanel.Dock="Right">
        <TextBox Name="txtName" Width="auto" Text="{Binding ElementName=lbNames,Path=SelectedValue}"/>
        <WrapPanel Margin="0,5" Orientation="Horizontal">
            <Button Margin="2,0" Name="btnAdd" Click="btnAdd_Click" Content="Add"/>
            <Button Margin="2,0"  Name="btnEdit" Click="btnChange_Click" Content="Edit"/>
            <Button Margin="2,0"  Name="btnDelete" Click="btnDelete_Click" Content="Delete"/>
        </WrapPanel>
    </StackPanel>
</DockPanel>

或者您也可以使用它 Text="{Binding ElementName=lbNames,Path=SelectedItem.Name}"