死的简单MVVM应用程序的列表框保持为空-我缺少什么
本文关键字:什么 MVVM 简单 应用程序 列表 | 更新日期: 2023-09-27 18:23:49
我的窗口的XAML如下所示:
<Window x:Class="Binding1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Cronjobs" Height="350" Width="525">
<Grid>
<ListBox HorizontalAlignment="Stretch" Margin="10" VerticalAlignment="Stretch" ItemsSource="{Binding Cronjobs}" />
</Grid>
</Window>
如可见,我将ListBox的ItemsSource
绑定到当前DataContext
的Cronjobs
属性。DataContext被设置为下面代码背后的构造函数中ViewModel的一个实例:
public partial class MainWindow : Window
{
private CronjobViewModel cronjobViewModel;
public MainWindow()
{
InitializeComponent();
this.cronjobViewModel = new CronjobViewModel();
this.DataContext = cronjobViewModel;
}
}
ViewModel如下所示:
class CronjobViewModel : DependencyObject
{
public ObservableCollection<Cronjob> Cronjobs;
public CronjobViewModel( )
{
this.Cronjobs = new ObservableCollection<Cronjob>();
this.Cronjobs.Add( new Cronjob() );
this.Cronjobs.Add( new Cronjob() );
}
}
为了进行快速简单的调试,我现在手动向集合中添加了一些项。Cronjob
类是实际的模型,它只不过是一个具有一些简单字符串属性的类,可以归结为基本部分:
class Cronjob {
private string name;
public string Name { get { return this.name; } set { this.name = value; } }
public Cronjob( ) { this.Name = "Herp"; }
}
我主要在web开发方面经验丰富,对WPF和MVVM的结合很陌生。我花了将近10个小时才弄清楚,但仍然没有找到原因。我还尝试了DataGrid。我看了大约三遍关于MVVM的Jason Dolingers视频的前半部分,并仔细观察了它是如何做到的,但它对我不起作用,尽管我理解MVVM的抽象概念。我敢肯定,我只是无意中遗漏了XAML中应该存在的内容,但篡改显示属性名称和项模板并没有帮助(根据我在互联网上发现的内容,它们甚至没有必要)。有人看到这个代码中的错误吗?
很抱歉代码转储太大,我用更紧凑的方式格式化了"无聊"的部分。
Cronjobs
是一个字段,不能绑定到字段。尝试将其更改为属性:
public ObservableCollection<Cronjob> Cronjobs { get; set; }
这应该有效;)
public class CronjobViewModel
{
public ObservableCollection<Cronjob> Cronjobs { get; private set; }
public CronjobViewModel()
{
this.Cronjobs = new ObservableCollection<Cronjob>();
this.Cronjobs.Add(new Cronjob());
this.Cronjobs.Add(new Cronjob());
}
}