2011-09-21 33 views
10

Tôi có một ListBox thats bị binded bởi truy vấn này khi TextName nội dung thay đổi:Làm cách nào để liên kết nội dung selecteditem của hộp danh sách với hộp văn bản?

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

listNames.ItemsSource = players.ToList(); 

Nó cho thấy tên người chơi bắt đầu với các văn bản trên hộp. Bây giờ khi tôi nhấp vào bất kỳ mục nào (tên) từ hộp danh sách, tôi cần TextName hiển thị tên người chơi được chọn trên hộp danh sách. Tôi cố gắng để ràng buộc nó theo cách này:

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

Nhưng khi tôi bấm một ListBoxItem, hộp văn bản chỉ được xóa và không hiển thị bất cứ điều gì .. Tôi có thể phải thiết lập các hộp như tôi làm với ListBox khi thiết DisplayMemeberPath ???? Tôi cần một cách duy nhất ràng buộc !! Tôi có thể làm gì ??

Trả lời

17

Bạn có 2 vấn đề với ràng buộc của bạn:

  1. Bạn đang sử dụng tài sản Nguồn thay vì ElementName để xác định danh sách tên hộp
  2. Bạn đang cố liên kết với thuộc tính Nội dung mà (tôi giả định) không tồn tại trên đối tượng Player của bạn. Điều này xảy ra bởi vì SelectedItem tài sản của ListBox là một thể hiện của Player khi bạn chỉ định một ItemsSource là bạn có

Để giải quyết điều này, bạn nên thay đổi ràng buộc của bạn như sau:

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

Bạn nên sử dụng RelativeSource để truy cập ListBox, ví dụ:

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

Điều này liên kết TextBox.Text với ListBoxes - được gọi là listNames - SelectedItem, chứa các đối tượng Player và bạn cần thuộc tính Tên của nó.

+0

ahh, quá chậm :( –

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> 

đây tôi gắn mục đã chọn của hộp danh sách để hộp văn bản ..

bạn có thể tìm thấy file zip cho mã nguồn đầy đủ

+0

gì file ZIP bạn đang nói trong khoảng? –

Các vấn đề liên quan