C# 无法从祖先数据网格获取数据

C# 无法从祖先数据网格获取数据,c#,.net,wpf,xaml,binding,C#,.net,Wpf,Xaml,Binding,我有以下数据网格: <DataGrid Name="dataGridWorkOrders" ItemsSource="{StaticResource workorders}" Grid.Row="1" IsReadOnly="True" HorizontalAlignment="Stretch" AutoGenerateColumns="False" VerticalAlignment="Top"> <DataGrid.Columns> <

我有以下数据网格:

<DataGrid Name="dataGridWorkOrders" ItemsSource="{StaticResource workorders}"  Grid.Row="1" IsReadOnly="True" HorizontalAlignment="Stretch" AutoGenerateColumns="False" VerticalAlignment="Top">
            <DataGrid.Columns>
 <DataGridTextColumn Header="Total Quantity" Binding="{Binding TotalQuantity}"/>
            </DataGrid.Columns>


  <DataGrid.RowDetailsTemplate>
                <DataTemplate>
                    <Border BorderThickness="0" Background="BlanchedAlmond" Padding="10">
                        <DataGrid IsReadOnly="True" ItemsSource="{Binding ScheduleCollection}" AutoGenerateColumns="False">
<DataGrid.Columns>


  <DataGridTextColumn Header="Total Quantity"  Binding="{Binding Path=TotalQuantity, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>

</DataGrid.Columns>

现在在rowdetails模板中,我尝试访问绑定到父datagrid行的TotalQuantity。我试着用祖先来实现,但没有工作

编辑
型号代码:

class WorkOrders : ObservableCollection<WorkOrder>
    {
        public WorkOrders()
        {
            var orderList = OrderDetailsProvider.GetOrders() as List<WorkOrder>;

            orderList.ForEach(
                        order => this.Add(order));
        }
    }

public class WorkOrder:BaseEntity
    {
        private string orderID;
        private int totalQuantity;
        private string status;
        private ObservableCollection<Schedule> scheduleCollection;

       ....All the fields exposed as proporties
}
类工作顺序:可观察收集
{
公共工作令()
{
var orderList=OrderDetailsProvider.GetOrders()作为列表;
orderList.ForEach(
order=>this.Add(order));
}
}
公共类工作顺序:BaseEntity
{
私有字符串orderID;
私人整数总量;
私有字符串状态;
私有可观察收集计划收集;
……所有以比例暴露的田地
}

您可以使用一个绑定来查找树上的
DataGridRow
2级。
找到的第一个是数据网格中
RowDetailsTemplate
(我们不需要)中的一个,第二个是当前
RowDetailsTemplate
的父行

通过绑定到找到的
DataGridRow
上的
DataContext.TotalQuantity
,您应该可以得到您要查找的值

因此,在“详细信息”模板中的列上,您可以执行以下操作:

<DataGridTextColumn Header="Total Quantity"
    Binding="{Binding Path=DataContext.TotalQuantity, 
             RelativeSource={RelativeSource AncestorType=DataGridRow, AncestorLevel=2}}" />


请您也显示工单资源的代码好吗?@FlorianGl,更新的工单和工单编码更改
Path=TotalQuantity
Path=DataContext.TotalQuantity
它还与
Binding=“{Binding Path=DataContext.TotalQuantity,RelativeSource={RelativeSource AncestorType=DataGrid}一起工作
我想。是的,它可以工作,但也更容易损坏。如果他决定在细节模板中根本不使用DataGrid,或者出于某种原因在将来为其设置不同的DataContext,那么它将不再有效。直接绑定到包含该值的控件,比使用恰好继承datacontext的中间人imo更能揭示意图。