2014-04-09 141 views
0

我有一個列表框,它有兩列。在按鈕單擊事件中,我將列數據添加到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來做到這一點?

回答

0

你應該分配的ItemsSource,

HistoryListBox.ItemsSource = Items; 

如果使用的是MVVM,

分配視圖模型的網頁,而不是到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> 
+0

那次不幸不行。我在上面編輯了我原來的帖子,以反映你的建議'ItemsSource =「{Binding Items}」'和ListBox中的TextBlock綁定名,以匹配我所擁有的'History.cs'類中的相應名稱。無法讓它工作。 – Matthew

+0

您的可觀察集合中有物品嗎?如果是這樣你嘗試賦值,HistoryListBox.ItemsSource = Items; – Sajeetharan

+0

你可以在這裏檢查,http://stackoverflow.com/questions/22463195/why-my-listbox-is-not-displaying-any-data/22463226#22463226 – Sajeetharan

0
<ListBox ItemsSource="{Binding Items, Mode=TwoWay}"> 
... 
</ListBox> 
+0

這裏與模式無關! – Sajeetharan