0

前回の質問「別の ViewModel から変数を更新/使用する」の続きとして、Caliburn Micro をフレームワークとして使い始めることにしました。

このガイドhttp://www.mindscapehq.com/blog/index.php/2012/02/01/caliburn-micro-part-4-the-event-aggregator/に従って Event Aggerator をセットアップしました。

問題は、このガイドによると、0 引数を取る「空の」コンストラクターがあってはならないということです。

まあ、いいです。

問題は、ViewModel を View にバインドする方法がわからないことです。このフレームワークに切り替える前に、App.xaml と静的リソースをデータ コンテキストとして使用していましたが、空のコンストラクターがないため、それ以上はできません。

この問題を解決するにはどうすればよいですか? 私はそれを1時間ほど解決しようとしてきましたが、まったく何も達成していません。

いくつかのコード:

[Export(typeof(ViewModelBase))]
public class ViewModelBase : INotifyPropertyChanged, IHandle<updateEvent>
{
    private Class _studclass;
    public AddStudentViewModel NewModel { get; private set; }

    public Class StudentClass
    {
        get { return _studclass; }
        set
        {
            _studclass = value;
            NotifyPropertyChanged("StudentClass");
        }
    }

    [ImportingConstructor]
    public ViewModelBase(AddStudentViewModel newModel, IEventAggregator events)
    {
        StudentClass = new Class();
        NewModel = newModel;
        Student asaf = new Student();
        asaf.Name = "Asaf";
        StudentClass.StudentList.Add(asaf);
        events.Subscribe(this);
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void NotifyPropertyChanged(string PropertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
        }
    }

    public void Handle(updateEvent msg)
    {
        StudentClass.StudentList.Add(msg.Student);
    }
}

それが「メイン」ビューモデルです。ただし、ビューにバインドできないため、データが表示されません... 偽のデータを設定しようとしましたが、ご想像のとおりうまく機能しませんでした。

4

1 に答える 1

1

Caliburn.Micro は規約を使用します。したがってShellViewModelViewModelsShellViewフォルダーに がある場合、Viewsフォルダーで が検索されます。

サンプルとドキュメントを参照することをお勧めします。最初に、 Caliburn.Micro.Start NuGet パッケージ (Caliburn.Micro をプルする)をインストールしてから、ドキュメントの説明に従って App.xamlファイルを編集することをお勧めします。

基本的に、ブートストラッパーはインスタンス化を引き起こすアプリケーション リソースであり、構成された IoC コンテナーを介してシェル ビュー モデルを解決し、対応するシェル ビューを見つけ、バインディングを行い、Caliburn.Micro ウィンドウ マネージャーを使用して表示します。

INotifyPropertyChangedまた、ビュー モデルの基本クラスに実装する必要もありません。Caliburn.Micro には、PropertyChangedBaseタイプとタイプScreenConductorタイプが含まれています。

于 2013-05-11T21:46:01.653 に答える