2015-05-07 83 views
0

我試圖在Visual Studio 2010中使用C#從我的sdf文件更新DataGrid。DataGrid如下。WPF DataGrid在ItemsSource設置時不顯示數據

<Grid Height="auto" Name="grid1" Width="auto" > 
    <Grid.RowDefinitions> 
     <RowDefinition Height="{Binding ElementName=grid1, Path=ActualHeight}"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition MinWidth="200" Width="200" Name="DGWidth"/> 
     <ColumnDefinition MinWidth="600" Name="PIWidth"/> 
    </Grid.ColumnDefinitions> 
    <DataGrid AutoGenerateColumns="True" 
       Grid.Column="1" Grid.Row="0" 
       Height="{Binding ElementName=grid1, Path=ActualHeight}" 
       HorizontalAlignment="Left" 
       Name="PIView" 
       VerticalAlignment="Top" 
       Width="{Binding ElementName=PIWidth, Path=ActualWidth}" 
       IsReadOnly="True"/> 
</Grid> 

我想填充PIView DataGrid。爲此,我將DataGrid引用傳遞給經理類中的方法updatePIView

public class PTManager 
{ 

    public PTManager() 
    { 
    } 

    public void updatePIView(ref DataGrid pIView, DateTime datetime) 
    { 
     PTDate date = PTDatabase.GetDt(datetime); 
     SqlCeDataAdapter adapter = PTDatabase.GetAdaperForPIViewForDt(date); 
     DataTable table = new DataTable(); 
     adapter.Fill(table); 
     pIView.ItemsSource = table.DefaultView; 
    } 
} 

在我設置ItemsSource的方法中。它適用於另一個DataGrid(具有單個列表),它在加載主窗口後立即加載。

我想在選擇事件中加載PIView中的數據。我可以看到表格中的數據。但是當表格的默認視圖設置爲ItemsSource時,什麼都不會發生。 WPF不會產生任何錯誤或警告。

我錯過了什麼嗎?

回答

0

請不要使用WPF,就好像它是Windows窗體...它是而不是 Windows窗體。

在WPF中,我們使用DataGrid通過加載數據以適當的形式到屬性和數據綁定該屬性的DataGrid.ItemsSource屬性是這樣的:

<DataGrid ItemsSource="{Binding YourCollectionProperty}" ... /> 

...

// preferably implement `INotifyPropertyChanged` interface on this property 
public ObservableCollection<YourDataType> YourCollectionProperty { get; set; } 

...

YourCollectionProperty = new ObservableCollection<YourDataType>(GetData()); 

如果您不熟悉數據綁定WPF,請參閱Data Binding Overview頁面上MSDN ...你還需要你的觀點的正確DataContext`設置爲該類的實例具有屬性將數據綁定到,例如:

DataContext = new SomeViewModelWithTheBindableProperty(); 
+0

我做不需要收集。所以,我沒有收集就嘗試過。但我不知道爲什麼它不起作用。順便說一下,我將'PTManager'分配爲viewmodel類,並將其設置爲窗口的靜態資源,以便在不使用雙向模式的情況下綁定屬性'DataView PIView'。 –

+0

您的'PTManager'類不*視圖模型,因爲視圖模型對視圖一無所知。任何具有UI相關屬性的'視圖模型'(例如'DataGrid'類型)都是* not *視圖模型。 – Sheridan

+0

我已經從PTManager中刪除了這些'DataGrid'。使用對接口沒有任何瞭解的屬性進行通信。 –

相關問題