我正在尝试将IEnumerable类UserList绑定到XAML中的ListBox,但我无法解析该对象的名称。我的xaml代码如下:
<ListBox DockPanel.Dock="Left" x:Name="UserListBox" Width="400"
ItemsSource="{Binding Source={StaticResource userList}}"
ItemTemplate="{StaticResource UserListTemplate}">
</ListBox>
我也在MainWindow.xaml.cs中实例化了userList,但我想我做的不对。意图是从UserList读取ListBox并从该IEnumerable创建用户列表。我该如何解决这个问题?
public MainWindow()
{
InitializeComponent();
DataConnection.CreateAndOpenDB();
src.UserList userList = new src.UserList();
}
答案 0 :(得分: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中编写Binding:
ItemsSource="{Binding UserList}"
请参阅Data Binding Overview了解相关信息。