2011-07-18 28 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更改爲列表或以編程方式獲取TextBoxes?提前致謝。

回答

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

嗯,給我「異常:雙路徑綁定需要Path或XPath。「 – acron

0

您可以在綁定中訪問索引值 - 不需要循環。請從Ivan Towlson檢查此previous SO answer。在這個例子中,Ivan使用了字符串索引器,但也可以使用數字。

相關問題