我的C#4.0应用中有一个视图模型,其中使用服务调用创建了eval "count $line"
。我想将它绑定到我的XAML文件中的System.Data.DataTable
。
我尝试了跟踪行DataGrid_Loaded事件,但是在我的数据表在视图模型中创建之前它被激活了。
XAML:
datagrid
xaml.cs:
<dg:DataGrid Name="myDataGrid" Loaded="DataGrid_Loaded"/>
答案 0 :(得分:1)
检查以下建议:在您的代码中,您必须将网格DataContext
设置为DataTable
:
myDataGrid.DataContext = myViewModel.myDataTable.DefaultView;
在您的XAML中,您需要指出ItemsSource
必须依赖于绑定:
<dg:DataGrid Name="myDataGrid" ItemsSource="{Binding}"/>
关注this link了解详情。另外,您可以找到一个包含CodeProject的解释的综合示例。
编辑:
不同的方法是将您的表保留为属性。在窗口中将窗口的数据上下文设置为视图模型,然后在视图模型中设置绑定到属性:
视图模型:
public DataTable myDataTable { get; set; }
在您的窗口中(显示数据网格的窗口:
public MainWindow()
{
InitializeComponent();
this.DataContext = myViewModel;
}
这样,您在主窗口XAML中的绑定将知道在哪里搜索数据 - 在myViewModel
中。
在您的XAML中,使用此方法不需要网格名称。但绑定必须指定数据源的名称:
<DataGrid ItemsSource="{Binding myDataTable}" AutoGenerateColumns="True"/>