7

私はプロジェクトを構築していますが、これまでに遭遇した最大の問題の 1 つはナビゲーションです。
caliburn.micro/mvvm ナビゲーションの例をしばらく探していましたが、それらはすべて非常に長いようで、あまり理解できませんでした (初心者向け!)。

私のプロジェクトに関するいくつかの情報:
シェルの内部でクリックされたボタンに応じてページを開くメニューリンク/タブを備えた外部ウィンドウ/シェルが必要であり、1 つの内部からページを変更して開くことができるようにしたい.

現在、ShellViewModel.cs、MainViewModel.cs、モデル、ビューがあります。 今のところ、私が知る必要があるのは、起動時に MainViewModel を shellviewmodel 内にロードする方法 (contentcontrol/frames を使用して...) と、あるページから別のページに移動する方法だけです。

また、それをポイントで書いて、いくつかの有用な例にリンクすることもできます。そこから続けることができると思います. 可能であれば、物事の完全な説明を得るのが最善です.

4

2 に答える 2

4

ShellView では、次のようなコンテンツ コントロールを使用します。

<ShellView xmlns:cal="http://caliburnproject.org/">
     <StackPanel>
           <Button Content="Show other view" cal:Message.Attach="ShowOtherView" />
           <ContentControl cal:View.Model="{Binding Child}" />
     </StackPanel>
</ShellView>

ShellViewModel:

public class ShellViewModel : Screen
{
     private object Child;

     public object Child
     {
           get{ return child; }
           set
           {
                if(child == value)
                     return;
                child = value;
                NotifyOfPropertyChange(() => Child);
           }
     }

     public ShellViewModel()
     {
         this.Child = new MainViewModel();
     }

     public void ShowOtherView()
     {
           this.Child = new FooViewModel();
     }
}

したがって、これは非常に基本的な例です。しかし、ご覧のとおり、ShellView はContentControl、子ビューを示す を提供します。これは、ShellViewModelのプロパティにContentControlバインドされています。View.ModelChild

ShellView では、ボタンを使用して別のビューを表示しましたが、メニューなどを使用することもできます。

于 2013-05-14T14:35:27.087 に答える