2

我正在尝试使用单个 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>

我猜这是因为选项卡控件的 DataTemplate 中的项目的 DataContext 与其外部的项目相比有所不同,但我只是在长时间休息后才重新启动我的 WPF,并且不知道如何在 DataTemplate 中获取 DataGrid正确绑定到 DataContext。

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

4

1 回答 1

4

您需要为 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 的控件即可

于 2013-02-19T18:36:40.280 回答