2011-09-21 91 views
10

我有一個列表框,多數民衆贊成得到通過此查詢綁定時TextName內容的變化:如何將listbox selecteditem內容綁定到文本框?

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

listNames.ItemsSource = players.ToList(); 

這表明,與文本框中的文本開始的球員的名字。現在,當我從列表框中點擊任何項目(名稱)時,我需要TextName顯示在列表框中選擇的玩家名稱。我試圖通過這種方式將其綁定:

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

但是,當我點擊一個ListBoxItem的,文本框只得到清除,並且不顯示任何東西。我可能要設置文本框像我與列表框做設定時DisplayMemeberPath?我只需要一種方式綁定! 我能做什麼?

回答

17

你有2個問題,你的綁定:

  1. 您正在使用Source屬性,而不是的ElementName指定列表框名稱
  2. 您試圖綁定到您的Player對象上不存在的Content屬性(我假設)。這是因爲ListBoxSelectedItem屬性的Player實例時指定的ItemsSource你有

爲了解決這個問題,你應該改變你的綁定於以下內容:

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

您應該使用RelativeSource訪問列表框,如:

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

這將TextBox.Text綁定到ListBoxes - 名爲listNames - SelectedItem,其中包含Player對象,並且您需要它的Name屬性。

+0

啊,太慢:( –

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> 

在這裏,我綁定列表框,文本框的選擇項..

你可以找到zip文件完整的源代碼

+0

什麼ZIP文件,你說關於? –

相關問題