0

Caliburn.Micro ソースに含まれるサンプル ソース コード Caliburn.Micro.SimpleMDI を編集して、viewmodel の 2 つのビューをタブ コントロールの 2 つのタブにバインドしようとしています。このプロジェクトには、TabView を使用した ShellViewModel と TabViewModel が含まれています。TabViewDetails という名前のビューを 1 つ追加しました。ShellViewModel を次のように編集しました。

public class ShellViewModel : Conductor<IScreen>.Collection.OneActive 
{
    int count = 1;

    public void OpenTab()
    {
        TabViewModel  vm = null;
        if (Items.Count != 0)
        {
            vm = new TabViewModel() { DisplayName = "Detail Tab " + count++ };   
            var secondView = new TabViewDetails();

            ViewModelBinder.Bind(vm, secondView , null);


        }
        else
        {
            vm = new TabViewModel() { DisplayName = "Tab " + count++ }; 
        }

        ActivateItem(vm);
    }

}

最初のタブはOKです。しかし、2 番目のタブには何も表示されません。

4

1 に答える 1

0

Caliburn.Microはあまり使用していませんが、簡単な解決策は1つのビューと1つのビューモデルです。コードを次のようなものに変更した場合:

public class ShellViewModel : Conductor<IScreen>.Collection.OneActive {
    int count = 1;

    public void OpenTab()
    {
        Screen screen;

        if (count != 0)
        {
            screen = new TabViewModel
                            {
                                DisplayName = "Tab " + _count++
                            };
        }
        else
        {
            screen = new TestViewModel
                            {
                                DisplayName = "Tab " + _count++
                            };
        }

        ActivateItem(screen);
    }
}

ここで、TestViewModelはTabViewModelにすることができます

public class TestViewModel : TabViewModel
{
}

その後、これは問題なく動作します。

Caliburnのドキュメントには、同じビューモデルに対する複数のビューのセクションがありますが、私はまだそれを理解していません。

于 2012-05-19T16:00:57.300 に答える