2010-03-24 31 views
5

我一直在寻找非常简单的事情:将WPF数据网格绑定到数据表以便在设计时查看列。我无法得到任何例子为我工作。如何将数据集中的表绑定到C#和XAML中的WPF数据网格

下面是C#代码来填充里面的数据集信息的数据表InfoWork:

info = new Info(); 
InfoTableAdapters.InfoWorkTableAdapter adapter = new InfoTableAdapters.InfoWorkTableAdapter(); 
adapter.Fill(info.InfoWork); 

的问题是无论我如何申报“信息”或“infoWork”的Visual Studio/XAML找不到它。我曾尝试:

<Window.Resources> 
    <ObjectDataProvider x:Key="infoWork" ObjectType="{x:Type local:info}" /> 
</Window.Resources> 

我自己也尝试从wpf.codeplex这个例子,但XAML甚至不喜欢“本地”的关键字!

<Window.Resources> 
    <local:info x:Key="infoWork"/> 
</Window.Resources> 

实际上有这里有两个主要问题: 1)我如何申报在C#中的表InfoWork使XAML可以看到它?我试图在XAML存在的窗口类中声明它为Public,但没有成功。 2)如何在XAML中声明Windows资源,特别是数据集中的数据表?

出于好奇,是否有一个原因,ItemsSource只是不显示为属性设置窗口中设置的属性?

+0

有是解决我的问题的最“最”的一个奇妙的例子,发布在:http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx – 2010-03-25 15:34:36

回答

5

以下列方式使用Microsoft DataGrid的工作对我来说:

在XAML我包括DataGrid中:

<WpfToolkit:DataGrid 
     Grid.Row="4" Grid.Column="0" 
     ItemsSource="{Binding Path=GridData, Mode=OneWay}" > 
    </WpfToolkit:DataGrid> 

在我的视图模型我露出一个DataView:

public DataView GridData 
    { 
    get 
    { 
     DataSet ds = new DataSet("MyDataSet"); 

     using (SqlConnection conn = new SqlConnection(ConnectionString)) 
     { 
      SqlCommand cmd = conn.CreateCommand(); 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "SELECT * FROM HumanResources.Employee"; 

      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      da.Fill(ds); 
     } 

     return ds.Tables[0].DefaultView; 
    } 
    } 
+0

只要您将数据上下文设置为表单本身,即,在构造函数中:this.DataContext = this; – jrcs3 2013-04-14 03:00:39

相关问题