0

次のデータグリッドがあります。

<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 テンプレート内で、親データグリッド行にバインドされている 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
}
4

1 に答える 1

2

DataGridRowツリーの 2 レベルを検出するバインディングを使用して実行できます。
最初に見つかったものは の DataGrid のものでRowDetailsTemplate(これは望ましくありません)、2 番目のものは現在の の親行ですRowDetailsTemplate

DataContext.TotalQuantity見つかったものにバインドすることで、DataGridRow探している値を取得する必要があります。

したがって、詳細テンプレートの列でこれを行うことができます:

<DataGridTextColumn Header="Total Quantity"
    Binding="{Binding Path=DataContext.TotalQuantity, 
             RelativeSource={RelativeSource AncestorType=DataGridRow, AncestorLevel=2}}" />
于 2012-11-23T08:13:16.550 に答える