用户控件中的 DataContext 到 DataGrid
DataContext to DataGrid in user control
我有一个带有 tabcontrol 的主 window。
添加带有用户控件内容的新 tabitem。
在 xaml:
<Grid><DataGrid DataContext="{Binding Path=Patients, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="Id"
Width="Auto"
Binding="{Binding Id}"/>
在后面的代码中:
打开上下文,
var query = from pp in context.Patients select pp;
var Patients = query.ToList();
TabItem patientsView = new TabItem(); // adding new tabitem
StackPanel header = new StackPanel
header.Children.Add(new TextBlock {Text="Patients"});
patientsView.Header = header;
patientsView.Content = new ViewDataPatients{DataContext = Patients};
它拒绝将绑定数据填充到网格。
知道我哪里做错了吗?
无法理解您为什么需要这种方法,但仍然如此。您已将 UserControl 的 DataContext 设置为 Patiense,因此 DataGrid 已经拥有此数据上下文,满足以下条件:
<DataGrid DataContext="{Binding}">
但这对你来说是多余的。要用数据填充 DataGrid,只需设置 ItemsSource:
<DataGrid ItemsSource="{Binding}">
希望对您有所帮助。
国王问候纳扎尔
我有一个带有 tabcontrol 的主 window。 添加带有用户控件内容的新 tabitem。 在 xaml:
<Grid><DataGrid DataContext="{Binding Path=Patients, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="Id"
Width="Auto"
Binding="{Binding Id}"/>
在后面的代码中: 打开上下文,
var query = from pp in context.Patients select pp;
var Patients = query.ToList();
TabItem patientsView = new TabItem(); // adding new tabitem
StackPanel header = new StackPanel
header.Children.Add(new TextBlock {Text="Patients"});
patientsView.Header = header;
patientsView.Content = new ViewDataPatients{DataContext = Patients};
它拒绝将绑定数据填充到网格。 知道我哪里做错了吗?
无法理解您为什么需要这种方法,但仍然如此。您已将 UserControl 的 DataContext 设置为 Patiense,因此 DataGrid 已经拥有此数据上下文,满足以下条件:
<DataGrid DataContext="{Binding}">
但这对你来说是多余的。要用数据填充 DataGrid,只需设置 ItemsSource:
<DataGrid ItemsSource="{Binding}">
希望对您有所帮助。
国王问候纳扎尔