将变量传递给C#WP8中的文本框

时间:2014-08-25 09:19:12

标签: c# windows-phone-8

我有一个Pivotelement,所以一个有多个站点的Windows Phone站点,每个站点都应该有5个菜单。我有一个列表,其中每个网站的每5个菜单和每个菜单必须在文本框中:

//Site 1
textbox1_site1.text = list[0].menu1;
textbox2_site1.text = list[0].menu2;
...
//Site 2
textbox1_site2.text = list[1].menu1;
textbox2_site2.text = list[1].menu2;
...
//Site 3
textbox1_site3.text = list[2].menu1;
...

这是我的名单来源。

public class Menus
{
    public date Datum { get; set; }
    public string menu1 { get; set; }
    public string menu2 { get; set; }
    ...
}

public class list
{
    public List<Menus> list { get; set; } 
}

我无法得到它。如何在一个循环中缩短它:

for(int i=0; i<5; i++)
{
    textbox[i+1]_site[i+1] = list[i].menu1;
    ...
}

我知道这是一个初学者的问题而且有点愚蠢,但我不明白。

1 个答案:

答案 0 :(得分:0)

据我所知,您有一个值列表,并希望在文本框中显示每个值。你可以用一点数据绑定来做到这一点。您需要将ItemsControl的ItemsSource属性设置为您的数据源(值列表)。在此之后,您只需修改ItemsControl.ItemTemplate属性即可。看看下面的代码是否有帮助。正如你所看到的,一切都在代码隐藏中以保持简短。

//in ctor, after InitializeComponents()
DataContext = this;
//create the source of data (values to display in text boxes)
public List<string> Data{
    get{
        return new List<string>(){"item1", "item2"};
    }
}

其余部分在xaml文件中。创建一个ItemsControl,从Data属性中获取数据并显示它。

<ItemsControl ItemsSource="{Binding Data}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Mode=TwoWay}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

这应该可以解决你的问题