0

Caliburn.Microを使用しており、2つのビューと相対的な2つのビューモデルがあります。

  • MainView(MainViewModel)
  • BView(BViewModel)

BViewにはDataGridがあり、BViewにはDataGridを埋めるメソッドがあります。MainViewにはボットンがあります。ボタンをクリックしてウィンドウBViewを開き、methotを呼び出してDataGridに入力してください(メソッド名はAllArticlesです)。

したがって、(MainWiewの)ボタンをクリックすると、DataGridが入力された状態でBViewが開きます。

MainViewModelコードは次のとおりです。

[Export(typeof(IShell))]
public class MainViewModel : Screen
{
    public string Path{ get; set; }

    public void Open()
    {
        OpenFileDialog fd = new OpenFileDialog();
        fd.Filter = "Text|*.txt|All|*.*";
        fd.FilterIndex = 1;

        fd.ShowDialog();

        Path= fd.FileName;
        NotifyOfPropertyChange("Path");
    }

}

BViewModelコードは次のとおりです。

public class BViewModel : Screen
{
    public List<Article> List { get; private set; }

    public void AllArticles()
    {
        Recover recover = new Recover();
        List = recover.Impor().Articles;
        NotifyOfPropertyChange("List");
    }    
}

私は何をすべきか?

4

1 に答える 1

2

CaliburnのWindowManagerの使用を検討してください。メインビューモデルのコードは次のようになります。

    [Export(typeof(IShell))]
    public class MainViewModel : Screen
    {
        public string Path{ get; set; }

        [Import]
        IWindowManager WindowManager {get; set;}

        public void Open()
        {
            OpenFileDialog fd = new OpenFileDialog();
            fd.Filter = "Text|*.txt|All|*.*";
            fd.FilterIndex = 1;

            fd.ShowDialog();

            Path= fd.FileName;
            NotifyOfPropertyChange("Path");

            WindowManager.ShowWindow(new BViewModel(), null, null);
        }    
    }

また、MainViewModelクラスにExport(IShell)属性があることに気付きました。これは、ScreenがIShellではないため、正しく表示されません。

于 2013-03-25T03:07:20.173 に答える