开发者

ListBox inside another ListBox

I have a simple class like this:

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

And then I have a List of objects of this class: List<myClass>. For example content of this list is

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

I want to display this array context in the following form:

First String
  1  2  3

Second String
  a  b  c

Note: actually I cannot concatenate 1+2+3 and a+b+c because what I have is not string array but an BitmapImage array (thats why I think that I need another listbox for this)

So, I think I should make a listbox inside another listbox. But possibly there is better way to do this exists.

Here my not_working XAML code:

<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 ''}"/>
                 开发者_如何学Python       </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

It displays only "First String" and "Second String", but not "1 2 3" and "a b c".

What should I do to display an Array content inside another Array?


if you remove the list item template for the inner list, your xaml should work just fine.

If you do not supply an ItemTemplate, then the default ListItem is used, which simply calls the ToString() method of the DataContext, which in this case is a string

one other thing to note, is that if you want your list to dynamically update, you should be using ObservableCollection<string> instead of List<string>. ObservableCollection implements INotifyCollectionChanged, wich tells the UI that an item is added or removed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜