如何绑定到stackpanel孩子?

时间:2011-07-18 13:18:38

标签: silverlight

我在其中定义了一个带有4个TextBlock的stackpanel,并定义了一个包含4个字符串作为属性的对象。

  class a 
  { 
     public string str1;
     public string str2;
     public string str3;
     public string str4;
  }

  <StackPanel>
     <TextBlock x:Name="txt1" />
     <TextBlock x:Name="txt2" />
     <TextBlock x:Name="txt3" />
     <TextBlock x:Name="txt4" />
  </StackPanel>            

我想定义类a的对象实例和stackpanel TextBlock.Text之间的绑定

我该怎么办?

1 个答案:

答案 0 :(得分:1)

要绑定到str1-4,它们必须至少获取/设置属性(如果在视图连接到类a的实例后它们将发生更改,则通知属性)。

 class a 
  { 
     public string str1 { get; set; }
     public string str2 { get; set; }
     public string str3 { get; set; }
     public string str4 { get; set; }
  }

  <StackPanel>
     <TextBlock x:Name="txt1" Text={Binding str1} />
     <TextBlock x:Name="txt2" Text={Binding str2} />
     <TextBlock x:Name="txt3" Text={Binding str3} />
     <TextBlock x:Name="txt4" Text={Binding str4} />
  </StackPanel> 

我不知道你的类存在于哪里,或者你是否正在使用MVVM(我猜不是),但至少在视图的构造函数中你需要设置视图的DataContext(或者只是堆栈)面板)到你的“a”实例。

e.g。

public MyView()
{
    InitializeComponent();
    this.DataContext = myaInstance;
}

或者如果你只想定位StackPanel,那么命名StackPanel并设置它的DataContext:

  <StackPanel x:Name="MyStackPanel">

public MyView()
{
    InitializeComponent();
    this.MyStackPanel.DataContext = myaInstance;
}