如何在C#和XAML中将数据集中的表绑定到WPF数据表格?

9

我已经花了几个小时搜索一个非常简单的事情:绑定WPF数据表格到数据表,以便在设计时查看列。我无法让任何示例对我起作用。

这是填充数据集info中的DataTable InfoWork的C#代码:

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

问题是无论我如何声明“info”或“infoWork”,Visual Studio/XAML都找不到它。我尝试过以下方法:
<Window.Resources>
    <ObjectDataProvider x:Key="infoWork" ObjectType="{x:Type local:info}"  />
</Window.Resources>

我也尝试了来自wpf.codeplex的这个例子,但XAML甚至不喜欢“local:”关键字!

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

这里有两个主要问题: 1) 如何在C#中声明InfoWork表格,以便XAML可以看到它?我尝试在窗口类中声明为公共(Public),但没有成功。 2) 如何在XAML中声明窗口资源,特别是数据集中的数据表格?

顺便问一下,为什么ItemsSource没有出现在属性设计窗口中呢?


这里有一个神奇的例子,解决了我所遇到的“大部分”问题,网址是:http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx - Jim Thomas
1个回答

6

以下是我使用 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;
     }
  }

只要在构造函数中将数据上下文设置为表单本身,即可正常工作:this.DataContext = this; - jrcs3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接