首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定NameValueCollection toTextBlock

绑定NameValueCollection toTextBlock
EN

Stack Overflow用户
提问于 2013-02-26 03:58:43
回答 1查看 290关注 0票数 0

我有ItemsControl,它使用模板绑定数据。

代码语言:javascript
复制
<ItemsControl ItemsSource="{Binding MyCollection}"  x:Name="MyCollectionControl" ItemTemplate="{DynamicResource MyCollectionTemplate}" />  

MyCollectionNameValueCollection类型,下面的绑定不起作用。它正在填充正确的对数,但TextBlock没有得到有界值。

模板

代码语言:javascript
复制
 <DataTemplate x:Key="MyCollectionTemplate">
        <Grid>
            <TextBlock Text="{Binding Path=Value, Mode=OneWay}"/>
            <TextBox Name="CValue"/>
        </Grid>
 </DataTemplate>    

mainWindow

代码语言:javascript
复制
string[] dataCollection=new string[5];
....
....
Student studentObject=new Student("1",dataCollection);

this.dataContext = studentObject;  

学生班

代码语言:javascript
复制
public class Student
{
    public string Id;
    public NameValueCollection MyCollection {get; set;}    

    public Student(string id, params string[] additionalInfo)
    {
        Id =  id;       

        if (additionalInfo != null)
        {
            MyCollection=new NameValueCollection();

            foreach (string s in MyCollection)
            {
                string[] tokens = s.Split('|');
                if (tokens.Length == 2)
                    MyCollection.Add(tokens[0], tokens[1]);
            }
        }
     }
}

当绑定NameValueCollection时,我做的错误是什么?

请给我建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-26 04:14:35

好的,有几件事情,其中一件您可能想要更改一下您的DataTemplate,因为您正在将文本框直接覆盖在文本块上,为了测试,我刚刚将它更改为堆栈面板:

代码语言:javascript
复制
<StackPanel>
    <TextBlock Text="{Binding}"/>
    <TextBox Name="CValue"/>
</StackPanel>

还请注意,我更改为简单的Text="{Binding}",因为NameValueCollection中的项只是字符串,没有值属性。

也不确定这是否只是另一个错误,但以下是:

代码语言:javascript
复制
foreach (string s in MyCollection)
{
    string[] tokens = s.Split('|');
    if (tokens.Length == 2)
        MyCollection.Add(tokens[0], tokens[1]);
}

应该说:

代码语言:javascript
复制
foreach (string s in additionalInfo)
{
    string[] tokens = s.Split('|');
    if (tokens.Length == 2)
        MyCollection.Add(tokens[0], tokens[1]);
}

否则,您只是在对一个空集合进行迭代。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15081097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档