簡體   English   中英

如何填充雙列列表框

[英]How to Populate a Dual Column ListBox

我有一個具有兩列的ListBox。 在按鈕單擊事件上,我將列數據添加到ObservableCollection,並且需要將集合綁定到ListBox以顯示ObservableCollection數據。 我在弄清楚如何執行此操作時遇到了麻煩。

MainPage.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>

MainPage.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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM