如何覆盖堆栈面板中的数据上下文?

时间:2011-01-21 00:33:02

标签: wpf mvvm stackpanel

如何覆盖第一个内部堆栈面板的数据上下文...这样......我可以引用A类中的属性

  Class A
    {

    public B  b;

    }

    Class B
    {
    }

    <stack panel DataContext = b >
        <stack panel>
         // HEre I use properties from class A
        </stack panel>
        <stack panel>
         // HEre I use properties from class B
        </stack panel>
        <stack panel>
         // HEre I use properties from class B
        </stack panel>
        <stack panel>
         // HEre I use properties from class B
        </stack panel>
    </stack panel>

2 个答案:

答案 0 :(得分:3)

Class A
    {

    // B Should b a property
    public B  B{get; set;};

    }

    Class B
    {
    }

   <!-- Set A's Context here -->
   <StackPanel DataContext=A>
        <StackPanel>
         // HEre you use properties from class A
        </StackPanel>

        <StackPanel DataContext={Binding Path=B}>
         // HEre you use properties from class B
        </StackPanel>

        <StackPanel DataContext={Binding Path=B}>
         // HEre you use properties from class B
        </StackPanel>

        <StackPanel DataContext={Binding Path=B}>
         // HEre you use properties from class B
        </StackPanel>
   </StackPanel>

答案 1 :(得分:0)

取决于您的课程实际设置方式,有几种方式。

  1. 创建一个引用Object的父类的关联属性。如果B类是A类的子类,那么B类中可以有一个属性引用A对象包含它。当您的DataContext设置在顶级堆栈面板上时,您的第一个孩子可能会有类似DataContext =“{Binding Parent}”的内容,其中parent是引用ClassA的属性。

  2. 只需将顶级堆栈面板中的DataContext设置为ClassA绑定,将第一个子节点留空,并将其设置为每个连续堆栈面板的b属性。

  3. 如果我理解你的权利,请告诉我。我可能需要更多关于你的程序和问题的背景知识。

    此外,最好复制/粘贴实际代码,而不是随意输入。真正的代码通常会为问题提供更好的背景。