如何填充双列列表框

本文关键字:列表 填充 何填充 | 更新日期: 2023-09-27 17:57:42

我有一个ListBox,它有两列。在按钮点击事件中,我将列数据添加到ObservableCollection,并且我需要将该集合绑定到ListBox以显示ObservableCollection。我很难弄清楚该怎么做。

主页.xaml

<ListBox x:Name="HistoryListBox" ItemsSource="{Binding Items}" Grid.Row="1" Grid.ColumnSpan="2">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" Text="{Binding ConnectionType}"/>
                                <TextBlock Grid.Column="1" Text="{Binding DateTime}"/>
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

主页.xaml.cs

public ObservableCollection<History> Items { get; set; }
public MainPage()
    {
        InitializeComponent();
        Items = new ObservableCollection<History>();
        HistoryListBox.DataContext = Items;
    }
private void TestButton_Click(object sender, RoutedEventArgs e)
    {
        ...
        PopulateHistoryListBox();
    }
private void PopulateHistoryListBox()
    {
        Items.Add(new History { ConnectionType = ConnectionTypeResultTextBlock.Text, DateTime = DateTime.Now });
    }

我不知道如何将ObservableCollection项正确绑定到ListBox?此外,我还需要在应用程序重新加载时以某种方式将这些数据保留在历史上。如何使用IsolatedStorage执行此操作?

如何填充双列列表框

您应该分配ItemsSource,

HistoryListBox.ItemsSource = Items; 

如果您正在使用MVVM、

将ViewModel分配给页面,而不是listBox、

 this.DataContext = ViewModel;
 <ListBox x:Name="HistoryListBox"  ItemsSource="{Binding Items}"  Grid.Row="1" Grid.ColumnSpan="2">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="*"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Grid.Column="0" Text="{Binding Network}"/>
                                    <TextBlock Grid.Column="1" Text="{Binding Date}"/>
                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
    </ListBox>
<ListBox ItemsSource="{Binding Items, Mode=TwoWay}">
...
</ListBox>