我在我的WPF应用程序中有一个Datagrid控件,我试图将该控件绑定到我的主窗口类中的ObservableCollection属性。我想绑定到财产的定义是:WPF ItemsSource绑定
private ObservableCollection<RequestResult> m_SentRequests = new ObservableCollection<RequestResult>();
public ObservableCollection<RequestResult> SentRequests { get { return m_SentRequests; } }
我的DataGrid是一组由具有在DataContext设置到主窗口:
<GroupBox Header="Results" Height="275" HorizontalAlignment="Stretch" Margin="0,305,0,0" Name="grpResults" VerticalAlignment="Top" Width="712" DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=my:MainWindow, AncestorLevel=1}}">
<Grid>
<DataGrid AutoGenerateColumns="False" Height="246" HorizontalAlignment="Stretch" Margin="6,6,6,0" Name="dgResults" VerticalAlignment="Top" ItemsSource="{Binding Path=SentRequests}" DataContext="{Binding}" IsSynchronizedWithCurrentItem="True" />
</Grid>
</GroupBox>
的问题我有是在属性窗口中,在选择SentRequests作为我的ItemsSource之后,我仍然无法选择“编辑属性绑定列”选项。我得到一个“您必须先设置ItemsSource,然后才能执行此操作”对话框。选择“生成列”和“删除列”时出现相同的错误。就好像我没有在ItemsSource属性中为我的对话框设置任何东西。
虽然我可以将AutoGenerateColumns设置为true,但我发现我的数据已经绑定(但是不是与我想要显示的列)。
我对WPF很陌生,我只是写这个测试Windows服务的快速测试应用程序。
任何人知道我在做什么错在这里?
DataGrid中的'DataContext =“{Binding}”'是多余的,我想,因为通常DataContext被继承。 – 2011-03-28 19:48:05
@ H.B。谢谢,我做了清理。它没有什么区别(不是你期望的)。可能是我尝试多件事的一个神器。 – Redbaran 2011-03-28 20:03:08