C# 从ViewModel中提取数据
我有一个视图模型:C# 从ViewModel中提取数据,c#,wpf,xaml,C#,Wpf,Xaml,我有一个视图模型: public class CreateRepositoryViewModel : BaseViewModel { private Repository _repository; public Repository Repository { get => _repository; set { _repository = value; OnProperty
public class CreateRepositoryViewModel : BaseViewModel
{
private Repository _repository;
public Repository Repository
{
get => _repository;
set
{
_repository = value;
OnPropertyChanged();
}
}
}
(BaseViewModel实现IPropertyChanged接口以简化)
然后,我将视图模型绑定到我的页面,如下所示:
DataContext = new CreateRepositoryViewModel();
然后,我有多个绑定到ViewModel的表单字段:
<TextBox Text="{Binding Path=Repository.LicenceTemplate}" />
<CheckBox IsChecked="{Binding Path=Repository.HasIssues}" VerticalAlignment="Center"/>
但是,数据上下文中的存储库属性返回null。如何在xaml页面后面的.cs文件中获取此数据?ViewModel中的Repository属性需要实例化
DataContext = new CreateRepositoryViewModel { Repository = new Models.Repository() };
或者,将非空初始值指定给属性的支持字段
public class CreateRepositoryViewModel : BaseViewModel
{
private Repository _repository = new Models.Repository();
...
}
那么这就足够了:
DataContext = new CreateRepositoryViewModel();
这是同一个页面实例是的,还需要哪些其他详细信息?正在从页面xaml文件后面的类进行数据上下文调用,该文件包含绑定到视图模型的控件。抱歉,我的错误。DataContext中的存储库属性为null。我将编辑我的问题。为什么你认为它不应该为空?您似乎没有在任何地方赋值<代码>私有存储库\u存储库除非指定值,否则代码>为null。如果我没有记错,则当控件文本通过绑定更新时,Property Changed方法应填充对象属性。对于“应填充对象属性”,必须有一个项目,即非空的存储库值。
DataContext = new CreateRepositoryViewModel();