【问题标题】:ListBox inside another ListBox另一个 ListBox 内的 ListBox
【发布时间】:2011-10-15 21:47:38
【问题描述】:

我有一个像这样的简单类:

public class myClass
{
    public List<string> innerList;
    public string innerString{get;set;}
}

然后我有一个此类对象的列表:List。例如这个列表的内容是

myList = new List<myClass>{
    new myClass{
        innerList = new List<string>{
            "1", "2", "3", "4"
        },
        innerString = "First String"
    },
    new myClass{
        innerList = new List<string>{
            "a", "b", "c", "d"
        },
        innerString = "Second String"
    }
};

我想以如下形式显示这个数组上下文:

First String
  1  2  3

Second String
  a  b  c

注意:实际上我无法连接 1+2+3 和 a+b+c,因为我拥有的不是字符串数组而是 BitmapImage 数组(这就是为什么我认为我需要另一个列表框)

所以,我认为我应该在另一个列表框中创建一个列表框。但可能存在更好的方法来做到这一点。

这是我的 not_working XAML 代码:

<ListBox x:Name="myListBox" ItemsSource="{Binding ''}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding innerString}"/>
                <ListBox x:Name="innerListBox" ItemsSource="{Binding innerList}">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding ''}"/>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

它只显示“第一个字符串”和“第二个字符串”,而不显示“1 2 3”和“a b c”。

如何在另一个 Array 中显示 Array 内容?

【问题讨论】:

    标签: c# silverlight windows-phone-7 data-binding


    【解决方案1】:

    如果您删除内部列表的列表项模板,您的 xaml 应该可以正常工作。

    如果您不提供ItemTemplate,则使用默认的ListItem,它只是调用DataContext 的ToString() 方法,在本例中为string

    要注意的另一件事是,如果您希望列表动态更新,您应该使用ObservableCollection&lt;string&gt; 而不是List&lt;string&gt;。 ObservableCollection 实现了 INotifyCollectionChanged,它告诉 UI 添加或删除了一个项目。

    【讨论】:

    • 首先,感谢您通知ObservableCollection。非常有用的提示。我意识到我的错误在哪里:我忘记在 myClass 中将 {get;set;} 方法设置为我的列表。你关于这个 XAML 应该工作的评论让我思考并仔细检查了我的 cs 代码)谢谢)
    猜你喜欢
    • 2016-06-03
    • 2013-06-08
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多