gpt4 book ai didi

wpf - 从 TabControl 的 DataTemplate 绑定(bind)到主 DataContext

转载 作者:行者123 更新时间:2023-12-03 10:21:39 24 4
gpt4 key购买 nike

我正在尝试使用单个 DataGrid 作为选项卡控件中每个选项卡的内容(然后我将重新加载网格的内容,以在单击不同选项卡时显示处于不同状态的模型)。

但是,由于某种原因,DataGrid 在 TabControl 的 DataTemplate 内时无法绑定(bind)。但是,在页面的主要流程中,相同的 Datagrid XAML 和绑定(bind)可以完美地工作。

<!-- 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正确绑定(bind)到 DataContext。

非常感谢您提供任何帮助/指示。

最佳答案

您需要为 DataGrid 绑定(bind)使用相对路径;

<!-- 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 的控件即可

关于wpf - 从 TabControl 的 DataTemplate 绑定(bind)到主 DataContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14964801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com