c# - 带有 MVVM 的 WPF:无法在不同页面的文本框中写入/读取数据
问题描述
所以我一直在为我的最终项目制作这个程序。我在我的 WPF 中使用标签控件中的页面给我们。在这些页面中,用户填写页面中的所有数据,然后按一个按钮,将保存数据并将其发送到服务器。或者他们可以从服务器加载数据,数据应该出现在 MVVM 的文本框中。但它没有,也没有从文本框中读取任何数据。我无法弄清楚我做错了什么。下面是我的一些代码(它有 59 个项目,所以我只显示一些)。并且只有来自服务器的插入。因为如果解决了这个问题,我认为保存/更新也很容易修复。先感谢您
Window.xaml.cs -
public void DataInlezen(string Json)
{
DataGebruiker viewmodel = new DataGebruiker();
var Djson = JsonConvert.DeserializeObject<JsonCS>(Json);
foreach (var AlgeInf in Djson.algemeneInformatie)
{
viewmodel.Achternaam = AlgeInf.Achternaam;
viewmodel.Voornaam = AlgeInf.Voornaam;
viewmodel.Straat = AlgeInf.Straat;
viewmodel.Huisnummer = AlgeInf.Huisnummer;
viewmodel.Postcode = AlgeInf.Postcode;
viewmodel.Stad = AlgeInf.Stad;
viewmodel.Email = AlgeInf.Email;
viewmodel.GSM = AlgeInf.GSM;
viewmodel.Beroep = AlgeInf.Beroep;
viewmodel.Leeftijd = AlgeInf.Leeftijd;
viewmodel.Geslacht = AlgeInf.Geslacht;
}
模型 -
public class DataGebruiker : INotifyPropertyChanged
{
private string _Achternaam;
public string Achternaam
{
get
{
return _Achternaam;
}
set
{
_Achternaam = value;
OnPropertyChanged("Achternaam");
}
}
private string _Voornaam;
public string Voornaam
{
get
{
return _Voornaam;
}
set
{
_Voornaam = value;
OnPropertyChanged("Voornaam");
}
}
//more stuff
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
视图模型 -
internal class DataGebruikerViewModel
{
private readonly DataGebruiker _DataGebruiker;
public DataGebruikerViewModel()
{
_DataGebruiker = new DataGebruiker();
}
public DataGebruiker DataGebruiker
{
get
{
return _DataGebruiker;
}
}
XAML -
<Page.DataContext>
<local:DataGebruikerViewModel/>
</Page.DataContext>
<!--some layout stuff-->
<TextBox Name="TextBoxAchternaam" Grid.Column="1" Grid.Row="0" Text="{Binding DataGebruiker.Achternaam}" FontSize="24" VerticalContentAlignment="Center" Margin="6" />
<TextBox Name="TextBoxVoornaam" Grid.Column="1" Grid.Row="1" Text="{Binding DataGebruiker.Voornaam}" FontSize="24" VerticalContentAlignment="Center" Margin="6" />
<Button Name="ButtonOpzoeken" Grid.Column="1" Content="Opzoeken" Grid.Row="8" Width="150" HorizontalAlignment="Center" FontSize="24" Click="ButtonOpzoeken_Click"/> //button to save
解决方案
我相信这是因为绑定在视图中的 DataGebruiker 的实例与 DataInlezen 方法实例化的实例不同。
推荐阅读
- selenium-webdriver - 谁能帮我从下面提到的代码中解决“IndexOutofBoundsException”?
- javascript - 如何在 kde 等离子菜单中使用 tts 服务?
- javascript - 需要使用正则表达式提取部分 url
- swift - 在优胜美地快速写入日志文件
- javascript - 输入“分页”
'缺少类型'UserEntity'的以下属性: - python - 比较两个字符串并在 Python 中提取浮点值
- c++ - 为什么不返回 std::vector 生成有关 dll 接口的编译器警告?
- ios - 我可以通过带有 RxSwift 的标志来暂停数据流吗?
- php - 为什么我是 laravel 抛出 SQLSTATE[42000]:语法错误或访问冲突:1064 错误
- r - 将基于索引的循环变成基于名称的函数