2015-05-25 146 views
0

我在我的C#4.0應用程序中有一個視圖模型,它具有使用服務調用在其中創建的System.Data.DataTable。我想將它綁定到我的XAML文件中的datagrid將數據綁定到WPF中的數據網格

我試過下面一行DataGrid_Loaded事件,但在我的數據表在視圖模型內被創建之前,它已經被觸發了。

XAML:

<dg:DataGrid Name="myDataGrid" Loaded="DataGrid_Loaded"/> 

xaml.cs:

myDataGrid.ItemsSource = myViewModel.myDataTable.DefaultView; 

回答

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"/> 
+0

謝謝PiotrWolkowski.I想這一點,但我沒有看到的UI屏幕上的任何數據,雖然我看到在數據表中的數據(在調試)。 – Mitu

+0

@Mitu我加了一個不同的方法。 – PiotrWolkowski

+0

再次感謝。我嘗試了你的第二種方法,但沒有運氣。 – Mitu