我正在尝试使用Visual Studio 2010中的C#从我的sdf文件更新DataGrid.DataGrid如下所示。
<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 :(得分:1)
请不要像使用Windows窗体一样使用WPF ...它的不是 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中的数据绑定,请参阅MSDN上的Data Binding Overview页面...您还需要将视图的DataContext`正确设置为具有该属性的类的实例数据绑定到例如:
DataContext = new SomeViewModelWithTheBindableProperty();