привязка текущего элемента wpf datagrid - PullRequest
3 голосов
/ 20 мая 2010

Я хочу связать содержимое Label с SelectedItem из DataGrid.

Я думал, что выражение привязки 'текущий элемент' будет работать, но это не так.

Мой xaml-код и кодовый код c # похож на ниже:

<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; } }
    }
}

Метка показывает первый элемент DataTable и не изменяется при выборе других элементов на DataGrid. Кажется, текущий элемент DataView не меняется. Что я должен сделать, чтобы привязать его к текущему SelectedItem из DataGrid?

Ответы [ 2 ]

2 голосов
/ 21 мая 2010

Попробуйте это

<Label Content = "{Binding ElementName = DataGridName, Path = SelectedItem}"/>
1 голос
/ 20 мая 2010

Связывание в вашем Label привязывается к Data независимо от привязки DataGrid к Data. Попробуйте:

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