2010-05-20 8 views
3

Je veux lier un contenu d'un Label au SelectedItem d'un DataGrid.wpf liaison d'élément courant datagrid

Je pensais que l'expression de liaison 'current item' fonctionnerait, mais ce n'est pas le cas.

Mon code XAML et code-behind C# est comme ci-dessous:

<Window x:Class="WpfApplication2.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="512" Width="847"> 
    <DockPanel LastChildFill="True"> 
     <Label Content="{Binding Data/colA}" DockPanel.Dock="Top" Height="30"/> 
     <DataGrid ItemsSource="{Binding Data}"></DataGrid> 
    </DockPanel> 
</Window> 

namespace WpfApplication2 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      this.DataContext = new MyData(); 
     } 
    } 

    public class MyData 
    { 
     DataTable data; 
     public MyData() 
     { 
      data = new DataTable(); 
      data.Columns.Add("colA"); 
      data.Columns.Add("colB"); 
      data.Rows.Add("aa", 1); 
      data.Rows.Add("bb", 2); 
     } 
     public DataTable Data { get { return data; } } 
    } 
} 

L'étiquette indique le premier élément du DataTable, et ne change pas lorsque je sélectionne d'autres articles sur le DataGrid. Il semble que l'élément actuel de DataView ne change pas. Que dois-je faire pour le lier à l'actuel SelectedItem du DataGrid?

Répondre

1

La liaison dans votre Label se lie à Data indépendamment de la liaison de DataGrid à Data. Essayez:

<Label Content="{Binding SelectedValue, ElementName=TheGrid}" /> 
<DataGrid x:Name="TheGrid" ItemsSource="{Binding Data}" /> 
2

Essayez cette

<Label Content = "{Binding ElementName = DataGridName, Path = SelectedItem}"/>