我的窗口的 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
到 current 的Cronjobs
属性DataContext
。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。我看了大约三遍Jason Dolingers Video的前半部分关于 MVVM 的内容,并仔细研究了它是如何做到的,但它对我不起作用,即使我理解了 MVVM 的抽象概念。我很确定我只是无意中遗漏了 XAML 中应该存在的一些东西,但是弄乱显示属性名称和项目模板并没有帮助(根据我在互联网上到处找到的内容,它们甚至没有必要)。有人看到此代码中的错误吗?
对于大型代码转储,我很抱歉,我以更紧凑的方式格式化了“无聊”的部分。