我在使用ADO.NET Framework将结果返回到WPF应用程序中的DataGrid时遇到了问题。
第一个记录是文字,第二个记录是第二个记录,第三个记录是日期(如果有人能给我一个答案,如何使这个字符串变得很棒)。
首先,DataGrid XAML代码
<DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" Grid.ColumnSpan="4" Height="200" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource testViewSource1}}" Margin="113,290,0,0" Name="testDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="319" Loaded="testDataGrid_Loaded">
<DataGrid.Columns>
<DataGridTextColumn x:Name="numerZamowieniaColumn" Binding="{Binding Path=numerZamowienia}" Header="numer Zamowienia" Width="SizeToHeader" />
<DataGridTextColumn x:Name="iloscDostawcowColumn" Binding="{Binding Path=iloscDostawcow}" Header="ilosc Dostawcow" Width="SizeToHeader" />
<DataGridTemplateColumn x:Name="dataUtworzeniaColumn" Header="data Utworzenia" Width="SizeToHeader">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Path=dataUtworzenia, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我在加载这个DataGrid时创建了事件处理程序:
zamowienieEntities zam = new zamowienieEntities();
private void testDataGrid_Loaded(object sender, RoutedEventArgs e)
{
IBindingList users = ((from d in zam.Test
select new { d.numerZamowienia, d.iloscDostawcow, d.dataUtworzenia }
) as IListSource).GetList() as IBindingList;
this.testDataGrid.DataContext = users;
}
这是尝试完成这项工作的众多方法之一,我现在正在考虑几个小时,并且找不到任何具体的答案。
提前致谢。
答案 0 :(得分:0)
当你这样做时
ItemsSource="{Binding Source={StaticResource testViewSource1}}"
您将ItemsSource
绑定到某个testViewSource1
资源,以便更改DataContext
,就像您在此行中所做的那样
this.testDataGrid.DataContext = users;
不会影响DataGrid
项的来源。解决您问题的方法之一是直接设置ItemsSource
而不是DataContext
this.testDataGrid.ItemsSource = users;
然后您不需要ItemsSource
绑定,或者如果您想设置DataContext
,则需要将ItemsSource
绑定更改为
ItemsSource="{Binding}"
将ItemSource
绑定到当前DataContext