私のウィンドウの 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>
表示されているように、ListBoxItemsSource
を現在の のCronjobs
プロパティにバインドしますDataContext
。DataContext は、コード ビハインドのコンストラクターで以下の ViewModel のインスタンスに設定されます。
public partial class MainWindow : Window
{
private CronjobViewModel cronjobViewModel;
public MainWindow()
{
InitializeComponent();
this.cronjobViewModel = new CronjobViewModel();
this.DataContext = cronjobViewModel;
}
}
ビューモデルは次のようになります。
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 のビデオの前半を3 回ほど見て、どのように実行したかを詳しく調べましたが、MVVM の抽象的な概念は理解していても、うまくいきません。そこにあるはずの XAML で意図せず何かを省略しただけだと確信していますが、表示プロパティ名と項目テンプレートをいじっても役に立ちませんでした (インターネットのあちこちで見つけたものによると、それらは必要でさえありません)。このコードでエラーが表示される人はいますか?
大きなコード ダンプで申し訳ありませんが、「退屈な」部分をよりコンパクトな方法でフォーマットしました。