【问题标题】:DataGrid RowDetailsTemplate binding looks in main Data ContextDataGrid RowDetailsTemplate 绑定在主数据上下文中查找
【发布时间】:2013-02-21 05:48:21
【问题描述】:

很明显,但我被困在这里..

我想在 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 对象的集合,我看到它们绑定正确。

虚拟机伪代码:

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。为什么?我做错了什么?

【问题讨论】:

    标签: c# silverlight xaml data-binding


    【解决方案1】:

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

    据我了解

    每个LanesData都有一个RNPPayPlanLane 1-1

    每个 RNPPayPlanLane 有许多 RNPPayPlanLaneDistances 1-N(主从)

    所以好像应该是这样的,

           ItemsSource="{Binding RNPPayPlanLane.RNPPayPlanLaneDistances}">
    

    【讨论】:

    • 我添加了更多代码。不,不像你描述的那样。我希望 RNPPayPlanLaneDistances 是一个属性,但错误清楚地表明嵌套网格查看 VM(主 DataContext,不在当前项目上)
    • 看来你是对的。它应该首先查看自己的数据上下文。
    • 对于telerik,它按预期工作telerik.com/help/silverlight/…
    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    相关资源
    最近更新 更多