Wpf 从TabControl的DataTemplate绑定到主DataContext
我尝试使用单个DataGrid作为选项卡控件中每个选项卡的内容,然后我将重新加载网格的内容,以在单击不同选项卡时显示处于不同状态的模型 但是,由于某种原因,DataGrid在TabControl的DataTemplate内时无法绑定。但是,在页面的主流程中,使用相同的Datagrid XAML和绑定可以完美地工作Wpf 从TabControl的DataTemplate绑定到主DataContext,wpf,mvvm,wpfdatagrid,datatemplate,datacontext,Wpf,Mvvm,Wpfdatagrid,Datatemplate,Datacontext,我尝试使用单个DataGrid作为选项卡控件中每个选项卡的内容,然后我将重新加载网格的内容,以在单击不同选项卡时显示处于不同状态的模型 但是,由于某种原因,DataGrid在TabControl的DataTemplate内时无法绑定。但是,在页面的主流程中,使用相同的Datagrid XAML和绑定可以完美地工作 <!-- first grid works perfectly--> <DataGrid ItemsSource="{Binding RANsToDisplay}"
<!-- first grid works perfectly-->
<DataGrid ItemsSource="{Binding RANsToDisplay}" />
<TabControl>
<TabControl.ContentTemplate>
<DataTemplate>
<!-- Second grid fails to bind-->
<DataGrid ItemsSource="{Binding RANsToDisplay}" />
</DataTemplate>
</TabControl.ContentTemplate>
<TabItem Header="Calls"></TabItem>
<TabItem Header="Collections"></TabItem>
<TabItem Header="Receipts"></TabItem>
</TabControl>
我猜这是因为选项卡控件的DataTemplate中的项的DataContext与它外部的项不同,但我只是在长时间休息后重新开始使用WPF,并且不确定如何使DataTemplate中的DataGrid正确绑定到DataContext
非常感谢您的帮助/指点。您需要为DataGrid绑定使用相对路径
<!-- first grid works perfectly-->
<DataGrid ItemsSource="{Binding RANsToDisplay}" />
<TabControl>
<TabControl.ContentTemplate>
<DataTemplate>
<!-- Second grid fails to bind-->
<DataGrid ItemsSource="{Binding DataContext.RANsToDisplay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
</DataTemplate>
</TabControl.ContentTemplate>
<TabItem Header="Calls"></TabItem>
<TabItem Header="Collections"></TabItem>
<TabItem Header="Receipts"></TabItem>
</TabControl>
只需将UserControl更改为容纳DataContext的控件即可您需要为DataGrid绑定使用相对路径
<!-- first grid works perfectly-->
<DataGrid ItemsSource="{Binding RANsToDisplay}" />
<TabControl>
<TabControl.ContentTemplate>
<DataTemplate>
<!-- Second grid fails to bind-->
<DataGrid ItemsSource="{Binding DataContext.RANsToDisplay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
</DataTemplate>
</TabControl.ContentTemplate>
<TabItem Header="Calls"></TabItem>
<TabItem Header="Collections"></TabItem>
<TabItem Header="Receipts"></TabItem>
</TabControl>
只需将UserControl更改为存放数据上下文的任何控件即可Brilliant,明白了,感谢PGallagher-来自莱斯特it dweeb的同事!太好了,很高兴我能帮忙!好人必须团结一致,你知道!TeeheeBrilliant,明白了,谢谢PGallagher——来自莱斯特it dweeb的同事!太好了,很高兴我能帮忙!好人必须团结一致,你知道!提伊