代码之家  ›  专栏  ›  技术社区  ›  Rodney

如何访问DataGrid数据绑定中基于同级或父级的值

  •  0
  • Rodney  · 技术社区  · 14 年前

    对不起这个冗长的标题-如果我的问题是由

    1. 劣质设计(可能)
    2. 无知(很可能)
    3. 两者(最有可能)

    我花了很多年的时间在谷歌上,但是由于我不太了解我的问题,所以很难找到解决方法。

    基本上,我有一个“日”类,它有一个可观察的周期集合,叫做周期。每个周期都有一段时间。我有一个day类的方法/属性(totalTimeupUntilthIsPeriod),它接受一个时间段,并返回到该时间点为止所有时间段的时间量。

    不过,我需要将此时间段级别设置为数据报可以绑定到它(它的itemssource设置为day.period s,它的dataContext设置为day)。但是,我必须在白天进行计算,因为时段实例对其兄弟姐妹一无所知,如果一个孩子从树上走到父级并对这些孩子进行汇总,就会感觉不对。

    我的想法是——一个时期不应该有“状态”,也就是说,不知道它在一天中相对于它的兄弟姐妹的位置——这是一天课的工作。

    因此,如果我的类设计是正确的,那么如何访问绑定数据列中的DataContext?我试图编写一个转换器,它将占用一个时间段,然后获取父数据上下文(day),并调用我的方法返回一个要在时间段级别绑定到的字符串),但我不知道如何使转换器知道DataGrid数据上下文,我想知道我是否在正确的轨道上。

    这可能是一个糟糕的设计,但我考虑复制子类(句点)中的父属性(例如totalTimeupUntilthIsPeriod),然后在每次更改句点时以某种方式设置它,以便我可以绑定到它,但它变得非常混乱。

    周期可以从DataGrid/日中添加/删除,这样就不能在RowLoad上计算周期-它必须是动态的(我想我可以使用Linq来合计所有以前周期的长度)。

    所以我想我的问题是:

    1. 我上面的班级设计可以吗?(I. 孩子们不应该知道 父母或他们的同伴 兄弟姐妹?)
    2. 如果是的话,那你是怎么绑定到 中的父属性或方法 如果值依赖于 父母的状况?

    谢谢你的指点。

    更新 :

    以下是我在冷天里尝试过的一些事情:

    1) Text= "{Binding DataContext.SomeTextField, ElementName=LayoutRoot}"

    这不起作用-它在DataGrid外部正常工作,但在内部不起作用。

    2)我尝试在模板化的DataGrid列中设置文本框的DataContext-这很好地工作,但随后我需要将行DataContext和父DataContext传递给转换器(以便查找在此期间之前的所有期间的总时间),我无法确定如何执行此操作。

    因此,另一个问题可能是-如何将当前行数据上下文传递给转换器和父数据上下文(或只是“如何使转换器了解父数据上下文”)。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Rodney    14 年前

    以下是我最后所做的-我想知道这是否是一个好的练习:

    我把父类作为子类的一个属性(这感觉是错误的?)-现在我可以在DataGrid中引用父级的属性。