2017-09-04 110 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

相关问题