需要在textBox1.text中显示第一元素,textBox2中显示第二个元素
我知道在winform中用DataGridView控件有如下代码
private void DataGridView1_CurrentCellChanged(object sender,EventArgs e)
{
   textBox1.Text=DataGridView1.CurrentRow.Cells[0].Value.ToString();
   textBox2.Text=DataGridView1.CurrentRow.Cells[1].Value.ToString();
}
求教在WPF中用DataGrid如何实现像DataGridView类似的这个功能呢

解决方案 »

  1.   

    使用{Binding}代码如下:
    .xaml<Window x:Class="MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="测试项目" Height="350" Width="525" Icon="/Images/user.png" ShowInTaskbar="True" WindowStartupLocation="CenterScreen" WindowStyle="SingleBorderWindow">
        <Grid Name="grid1">
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="30" />
            </Grid.RowDefinitions>
            <ListView Grid.Row="0" x:Name="listview1">
                <ListView.View>
                    <GridView x:Name="gridview1">
                        <!--注意两种写法都可以,就是path-->
                        <GridViewColumn Header="账号" DisplayMemberBinding="{Binding 字段1}" />
                        <GridViewColumn Header="密码" DisplayMemberBinding="{Binding 字段2}" />
                        <GridViewColumn Header="姓名" DisplayMemberBinding="{Binding Path=字段3}" />
                        <GridViewColumn Header="住址" DisplayMemberBinding="{Binding Path=字段4}" />
                    </GridView>
                </ListView.View>
            </ListView>
            <WrapPanel Grid.Row="1" Orientation="Horizontal" DataContext="{Binding ElementName=listview1, Path=SelectedItem}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Height="23" Name="textBlock1" Text="绑定字段1:" />
                    <TextBox Height="23" Name="tb_pppoeid" Width="120" Text="{Binding 字段1}"/>
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Height="23" Name="textBlock2" Text="绑定字段2:" />
                    <TextBox Height="23" Name="tb_pppoepwd" Width="120" Text="{Binding 字段2}" />
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Height="23" Name="textBlock3" Text="绑定字段3:" />
                    <TextBox Height="23" Name="tb_username" Width="120" Text="{Binding 字段3}" />
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Height="23" Name="textBlock4" Text="绑定字段4:" />
                    <TextBox Height="23" Name="tb_useraddr" Width="120" Text="{Binding 字段4}" />
                </StackPanel>
            </WrapPanel>
            <Button Grid.Row="2" Content="Button" HorizontalAlignment="Left" Width="66" Click="Button_Click" />
        </Grid>
    </Window>
    .xaml.cs 获取数据的后台代码using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Data;
    using System.Data.OleDb;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;namespace 新练习
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                getdata();
            }        //定义连接字符串变量
            private string connstr = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=db.mdb";
            //定义数据容器
            OleDbDataAdapter da;
            DataTable dt;
            //获取数据
            private void getdata()
            {
                OleDbConnection conn = new OleDbConnection(connstr);
                da = new OleDbDataAdapter("select * from 表",conn);
                OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
                da.UpdateCommand = cb.GetUpdateCommand();
                dt = new DataTable();
                da.AcceptChangesDuringUpdate = true;
                da.Fill(dt);
                listview1.ItemsSource = dt.DefaultView;
                conn.Close();
            }        //点击获取数据按钮
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                da.Update(dt);
                getdata();
            }
        }
    }敲的手都疼了,测试通过》。我现在正在研究Ribbon,有空交流一下呵呵
      

  2.   

    别的不知道了 -_-!wpf推荐的就是使用绑定Binding的方法PS:winform和wpf的展示原理是不同的,wpf其实就是类似B/S的程序,前台展示层后台处理逻辑。也就是真正意义上的视图和代码分离。因此我也建议你使用这种方法