2011-07-18 7 views
0

私はこのような、のTextBlockコントロールのシリーズを持っている:WPFでは、ループ内のコントロールに値をバインドできますか?

<TextBox Name="tb1"/> 
<TextBox Name="tb2"/> 
<TextBox Name="tb3"/> 
<TextBox Name="tb4"/> 

そして私は、私はそれらのテキストボックスにバインドしたい値のリストを持って、リストに言う:

List<String> texts = new List<String>(); 
texts.Add("test1"); 
texts.Add("test2"); 
texts.Add("test3"); 
texts.Add("test4"); 

現在、私はこのように、手動でテキストボックスの値を設定されている何をすべきかを持っている:

tb1.Text = texts[0]; 
tb2.Text = texts[1]; 
tb3.Text = texts[2]; 
tb4.Text = texts[3]; 

それは何とかループでこれを行うことは可能ですか?おそらくXAMLを変更してリストを取得するか、プログラムによってTextBoxを取得しますか?ありがとうございます。

答えて

5
<ItemsControl Items="{Binding myValues}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <TextBox Text="{Binding}"></TextBox> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

は、背後にあるプロパティを宣言:

public string myValues { get return new[] { "foo", "bar" }; } 

とそののDataContextに、このコントロールを設定し、コンストラクタの背後にあるコードで:

this.DataContext = this; 
+0

うーん、私に「例外与える:二をwayバインディングにはPathまたはXPathが必要です。 – acron

0

バインディング内のインデックス値にアクセスできます。ループは必要ありません。 previous SO answerIvan Towlsonからチェックしてください。 Ivanはこの例では文字列インデクサーを使用していますが、数値型も使用できます。あなたのコードで

関連する問題