2017-09-04 225 views
0

我想綁定一個IEnumerable類UserList到XAML中的ListBox,但我無法解析對象的名稱。我的XAML代碼如下:WPF綁定IEnumerable到ListBox與DataTemplate

  <ListBox DockPanel.Dock="Left" x:Name="UserListBox" Width="400" 
        ItemsSource="{Binding Source={StaticResource userList}}" 
        ItemTemplate="{StaticResource UserListTemplate}"> 

      </ListBox> 

我已經在用戶列表實例MainWindow.xaml.cs爲好,但我想我沒有做正確的事情。意圖是從ListList中讀取ListBox並從該IEnumerable創建一個用戶列表。我該如何解決?

public MainWindow() 
    { 
     InitializeComponent(); 
     DataConnection.CreateAndOpenDB(); 
     src.UserList userList = new src.UserList(); 


    } 

回答

1

局部變量無法通過StaticResource擴展名解析。

創建一個UserList屬性,如下所示,並將Window的DataContext設置爲this。如果您希望能夠在設置DataContext之後添加或刪除元素,則類UserList應實現INotifyCollectionChanged接口。它可能從ObservableCollection派生。

public src.UserList UserList { get; } = new src.UserList(); 

public MainWindow() 
{ 
    InitializeComponent(); 
    DataConnection.CreateAndOpenDB(); 
    // add elements to UserList here 

    DataContext = this; 
} 

然後寫在XAML綁定是這樣的:

ItemsSource="{Binding UserList}" 

的介紹請參見Data Binding Overview