0

我有 2 件物品:

Title = new ObservableCollection<string>();                
Author = new ObservableCollection<string>();

我想把它们放在ListBox第一个Title 1Author 1下面,然后是Title 2 ...。我怎么能用 , 做到这DataBinding一点ListBox DataTemplate

<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel>
            <Label Foreground="Blue" Content="{Binding Title}"></Label>
            <Label Foreground="Red" Content="{Binding Author}"></Label>
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>
4

2 回答 2

1

是的,我会使用DataTemplate.

我将创建一个如下所示的对象,而不是维护标题和作者的单独列表:

public class Book
{
    public string Title {get; set;}
    public string Author {get; set;}
}

然后我会创建一个书籍集合

Books = new ObservableCollection<Book>();
Books.Add(new Book { Title="Dragons", Author="Bob"} );

最后,在 Xaml 中,我将我的设置ItemsSourceListBoxBooks 并绑定到 Title 和 Author 属性,如下所示:

<ListBox ItemsSource="{Binding Books}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <Label Content="{Binding Title}" />
                <Label Content="{Binding Author}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
于 2013-06-04T14:19:26.273 回答
0

如果这不是问题,您可以将这些 Title 和 Author 保留在同一个类中。让我们说具有字符串 Title 和字符串 Author 的 Book 类;

现在你有一个ObservableCollection<Book> MyBooks

     <ListBox ItemsSource="{Binding MyBooks}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                    <Label Foreground="Blue" Content="{Binding Title}"></Label>
                    <Label Foreground="Red" Content="{Binding Author}"></Label>
            </DataTemplate>
        </ListBox.ItemTemplate>
     </ListBox>
于 2013-06-04T14:20:38.120 回答