DataGrid RowDetailsTemplate绑定在主数据上下文中查找

时间:2013-02-21 05:48:22

标签: c# silverlight xaml data-binding

显而易见,但我被困在这里..

我想在DataGrid中显示DataGrid,这里是XAML:

<sdk:DataGrid 
    ItemsSource="{Binding RNPPayPlanLanes}" 
    RowDetailsVisibilityMode="Visible">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTextColumn Header="From region" Binding="{Binding FromRegionKey, Mode=TwoWay}" />
        <sdk:DataGridTextColumn Header="To region" Binding="{Binding ToRegionKey, Mode=TwoWay}" />        
    </sdk:DataGrid.Columns>
    <sdk:DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <sdk:DataGrid 
                HorizontalAlignment="Right"
                ItemsSource="{Binding RNPPayPlanLaneDistances}">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Header="UpToDistance" Binding="{Binding UpToDistance, Mode=TwoWay}" />
                    <sdk:DataGridTextColumn Header="PayPerDistanceUnitAmount" Binding="{Binding PayPerDistanceUnitAmount, Mode=TwoWay}" />                    
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>
        </DataTemplate>
    </sdk:DataGrid.RowDetailsTemplate>
</sdk:DataGrid>

MyViewModel包含RNPPayPlanLane个对象的集合,我看到它们绑定得正确。

VM的伪代码:

class MyViewModel
{
public List<RNPPayPlanLane> RNPPayPlanLanes { get; set; }
}

class RNPPayPlanLane
{
public List<RNPPayPlanLaneDistance> RNPPayPlanLaneDistances { get; set; }
}

class RNPPayPlanLaneDistance {}

RNPPayPlanLane具有集合属性'RNPPayPlanLaneDistances',我正在尝试将其用于嵌套网格。这不起作用。我收到错误:

  

System.Windows.Data错误:BindingExpression路径错误:   'MyViewModel'上找不到'RNPPayPlanLaneDistances'属性

因此,它没有绑定到“当前项”,它试图绑定到我的主DataContext。为什么?我做错了什么?

1 个答案:

答案 0 :(得分:0)

我使用telerik的分层网格。我需要定义一个层次结构,没有使用RowDetailsTemplate但是你的错误说该属性丢失了,

据我了解

每个 LanesData 都有一个 RNPPayPlanLane 1-1

每个 RNPPayPlanLane 有多个 RNPPayPlanLaneDistances 1-N(主要细节)

好像应该那样,

       ItemsSource="{Binding RNPPayPlanLane.RNPPayPlanLaneDistances}">