2011-09-21 12 views
10

que tienen un cuadro de lista que eso es conseguir encuadernados por esta consulta cuando cambia el contenido textName:¿Cómo puedo vincular un contenido de cuadro de lista seleccionado a un cuadro de texto?

var players = 
    from p in context.Player 
    where p.GivenName.StartsWith(TextName.Text.Trim()) 
    select p; 

listNames.ItemsSource = players.ToList(); 

Muestra los nombres de los jugadores que comienza con el texto en el cuadro de texto. Ahora cuando hago clic en cualquier elemento (nombre) del cuadro de lista, necesito que TextName muestre el nombre del jugador que está seleccionado en el cuadro de lista. He intentado unir de esta manera:

<TextBox ... Text="{Binding Source=listNames, Path=SelectedItem.Content}" ... /> 

Pero cuando hago clic en un ListBoxItem, el cuadro de texto acaba de ser anulado y no muestra nada .. puedo tener para configurar el cuadro de texto como lo hago con el cuadro de lista al establecer el DisplayMemeberPath ???? ¡Necesito un enlace de una sola manera! ¿Qué puedo hacer?

Respuesta

17

Usted tiene 2 problemas con su unión:

  1. Está utilizando la propiedad Source en lugar de la ElementName para especificar la lista nombre de caja
  2. Está intentando unir a una propiedad de contenido que (asumo) no existe en su objeto Player. Esto ocurre porque la propiedad SelectedItem del ListBox es una instancia de Player Cuando se especifica una ItemsSource y cuando tenga

Para resolver esto, usted debe cambiar su unión a lo siguiente:

<TextBox ... Text="{Binding ElementName=listNames, Path=SelectedItem.GivenName}" ... /> 
0

Debe utilizar RelativeSource para acceder al cuadro de lista, por ejemplo:

<TextBox ... Text="{Binding RelativeSource={RelativeSource 
         AncestorType={x:Type ListBox}}, Path=SelectedItem.Content}" .... /> 
1
<TextBox ... Text="{Binding ElementName=listNames, Path=SelectedItem.Name}" ... /> 

Esto vincula el TextBox.Text a ListBoxes - llamado listNames - SelectedItem, que contiene objetos Player, y necesita su propiedad Name.

+0

ah, demasiado lento :( –

0
 <Page 
     x:Class="Studentt1.MainPage" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:local="using:Studentt1" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      mc:Ignorable="d"> 

      <Grid Background="Wheat"> 
      <ListBox x:Name="listBox1" ItemsSource="{Binding StudentsList}" 
      SelectedItem="Binding SelectedStud,Mode=TwoWay}"   
      DisplayMemberPath="StudName"  
    HorizontalAlignment="Left" Height="332" Margin="59,173,0,0" VerticalAlignment="Top"                 
    <Button Content="Load" Command="{Binding LoadCommand}" HorizontalAlignment="Left" 
    Margin="144,567,0,0" VerticalAlignment="Top"/> 

      <Grid Background="Brown" HorizontalAlignment="Left" Height="352" 
      VerticalAlignment="Top" Width="633"> 
      <Grid.RowDefinitions> 
      <RowDefinition Height="50"/> 
      <RowDefinition Height="50"/> 
      <RowDefinition Height="50"/> 
      <RowDefinition Height="50"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="347"/> 
      <ColumnDefinition Width="401"/> 
      <ColumnDefinition Width="367*"/> 
      <ColumnDefinition Width="251*"/> 
     </Grid.ColumnDefinitions> 

     <TextBlock Grid.Row="0" FontSize="30" Grid.Column="0" Text="Registration 
     Number" HorizontalAlignment="Center" Margin="46,0,25,0" Width="276"/> 
     <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding 
     ElementName=listBox1,Path=SelectedItem.RegNo,Mode=TwoWay}"/> 
     <TextBlock Grid.Row="1" Grid.Column="0" FontSize="30" Text="Name" 
     HorizontalAlignment="Center" Margin="144,0,124,0" Width="79"/> 
     <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding 
     ElementName=listBox1,Path=SelectedItem.StudName,Mode=TwoWay}"/> 
     <TextBlock Grid.Row="2" Grid.Column="0" FontSize="30" Text="Age" 
     HorizontalAlignment="Center" Margin="157,0,137,0" Width="53"/> 
     <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding 
     ElementName=listBox1,Path=SelectedItem.Age,Mode=TwoWay}"/> 
     </Grid> 


     </Grid> 
     </Page> 

aquí Ato el elemento seleccionado del cuadro de lista de cuadro de texto ..

se puede encontrar el archivo zip para el código fuente completo

+0

Qué archivo ZIP que estas hablando ¿acerca de? –

Cuestiones relacionadas