我尝试将ObservableCollection<UserProfile> UsersList
绑定到网页DataContext
,但程序一直告诉我,他找不到UsersList
,尽管我可以使用Debug.WriteLine
在OutPut中看到它的值。
但另一方面,如果我在C#代码中添加DataContext
,一切都很完美。
我做错了什么?
C#代码:
this.DataContext = new UsersViewModel(); //inside MainPage constructor
XAML代码:
DataContext="{Binding UsersViewModel, RelativeSource={RelativeSource Self}}" //inside <page .../>
答案 0 :(得分:4)
尝试以这种方式设置绑定:
DataContext="{Binding RelativeSource={RelativeSource Self}}"
您当前的绑定意味着将数据上下文绑定到其自身声明的名为UsersViewModel
的属性。例如,如果您在后面的代码中有类似的内容,那将会有效:
public UsersViewModel UsersViewModel { get; set; }
然后将DataContext设置为该属性。
更新:
查看您的答案,您可以尝试以这种方式在页面级别设置DataContext:
<Page.DataContext>
<local:UsersViewModel />
</Page.DataContext>
答案 1 :(得分:1)
好的,我现在已经开始工作,但在这种情况下,我不会在页面本身绑定任何内容,而是在网格上绑定。
<Page.Resources>
<local:UsersViewModel x:Key="UsersViewModel" />
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" DataContext="{StaticResource UsersViewModel}">
这是一个好的解决方案吗?
答案 2 :(得分:0)
UserViewModel应该是MainPage.xaml.cs代码中的可访问对象。你可以有像
这样的东西public UsersViewModel UsersViewModel { get {return _usersViewModel; } private set { _usersViewModel = value;} }
您必须使用对象名称而不是类名。