C# - 使用WPF为每个项目创建一个两行ListBox

Dan*_*sen 0 c# wpf listbox multiline

我在WPF上遇到了一些麻烦,因为它是我第一次使用它.

我试图创建一个ListBox,它为每个项目保存两行.我怎样才能实现这一目标?

我尝试过以下方法:

<ListBox>
    <Label name="first">First Line</label>
    <Label name="second">Second Line</label>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

即使这没有给出任何错误,我也不认为这是正确的方法.

你们能协助吗?

d.m*_*ada 5

您可以通过修改ListBox ItemTemplate,同时绑定到要显示的数据集合来实现此目的.

XAML:

<ListBox Name="MyListBox" ItemsSource="{Binding ListBoxData}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding Text1}" MinWidth="200"/>
                <TextBlock Text="{Binding Text2}" MinWidth="200"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

Xaml.cs:

namespace WpfApplication1
{
    public partial class MainWindow 
    {
        public List<MyRow> ListBoxData { get; set; } 
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = this;
            ListBoxData = new List<MyRow>
            {
                new MyRow{Text1 = "Row 1 - Data 1", Text2 = "Row 1 - Data 2"},
                new MyRow{Text1 = "Row 2 - Data 1", Text2 = "Row 2 - Data 2"},
                new MyRow{Text1 = "Row 3 - Data 1", Text2 = "Row 3 - Data 2"}
            };
        }
    }       

    public class MyRow
    {
        public string Text1 { get; set; }
        public string Text2 { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

就WPF而言,您通常希望直接将绑定而不是硬编码项目用于xaml.上面的示例显示了通过代码隐藏进行数据绑定,但理想情况下,您可能希望创建一个ViewModel并绑定到它.一旦你熟悉w/WPF,我建议你查找MVVM.