在WPF中,是否可以将值绑定到循环中的控件?

时间:2011-07-18 05:04:43

标签: wpf xaml

我有一系列TextBlock控件,如下所示:

<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");

目前,我要做的是手动设置TextBoxes的值,如下所示:

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

是否有可能以某种方式在循环中执行此操作?也许更改XAML以获取列表或以编程方式获取TextBoxes?非常感谢。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您可以访问绑定中的索引值 - 无需循环。从previous SO answer查看此Ivan Towlson。 Ivan在该示例中使用了字符串索引器,但您也可以使用数字索引器。