如何在wpf c#中将数据从datagrid显示到文本框

时间:2014-03-25 21:12:31

标签: c# wpf datagrid textbox wpfdatagrid

请问some1请给我一个示例或代码,如何在c# - wpf app中将数据从datagrid显示到文本框。

我试过像在Windows窗体应用程序中那样做,但代码不起作用。

if (e.RowIndex >= 0)
        {
            DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];

            name.Text = row.Cells["Name"].Value.ToString();
            lastName.Text = row.Cells["LastName"].Value.ToString();
            userName.Text = row.Cells["UserName"].Value.ToString();
            password.Text = row.Cells["Password"].Value.ToString();
        }

1 个答案:

答案 0 :(得分:1)

首先,WPF不是WinForms,尝试以同样的方式编写代码只会让你感到痛苦。你想要做的事实上在WPF中真的很容易!最短的解决方案是直接绑定到DataGrid SelectedItem属性:

<DataGrid x:Name="UserGrid" ItemsSource="{Binding Users}">
...
</DataGrid>

<TextBox Text="{Binding ElementName=UserGrid, Path=SelectedItem.Name}"/>
...More of the same...

现在假设DataGrid绑定到&#34; User&#34;的集合。您的ViewModel中的类(它绝对应该是)(不是您的代码隐藏)。另一种方法是绑定SelectedItem,然后让其他控件绑定到它,如下所示:

<DataGrid x:Name="UserGrid" ItemsSource="{Binding Users}" SelectedItem="{Binding CurrentUser}">
...
</DataGrid>

<TextBox Text="{Binding Path=CurrentUser.Name}"/>
...More of the same...

当然你现在需要一个&#34; CurrentUser&#34;要绑定到的ViewModel中的属性。两种方式都是同样有效的方法,只是决定你更喜欢哪种方式。如果您需要&#34; CurrentUser&#34;代码中的其他东西的对象,第一个更快,如果你不需要它就没有shell属性。如果您没有使用MVVM做任何事情,这是一个很棒的教程(MSDN)。