我正在尝试使用单个DataGrid作为选项卡控件中每个选项卡的内容(然后我将重新加载网格的内容,以便在单击不同选项卡时显示不同状态的模型)。
但是,由于某种原因,当DataGrid位于TabControl的DataTemplate中时,它无法绑定。相同的Datagrid XAML和绑定在页面的主流程中工作正常。
<!-- 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>
我想这是因为Tab Control的DataTemplate中的项目的DataContext与它之外的项目相比有所不同,但我只是在长时间休息之后才重新开启我的WPF头,并且我不确定如何获取DataGrid在DataTemplate中正确绑定到DataContext。
非常感谢任何帮助/指针。
答案 0 :(得分:3)
您需要使用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所需的控件