一般的にあなたのビューにView-Placeholderのようなものがあります。これは、私はあなたは、単にのContentPresenterを使用することができると思う、あなたの問題のために(複数のコンテンツについて、のContentPresenterまたはちょうどのTextBlock)のItemsControlのような全く異なるもの
ことができます。
サンプルビュー:
<UserControl x:Class="WpfApplication1.View.SampleVIew"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<DockPanel>
<!--Ribbon Menu-->
<Menu DockPanel.Dock="Top" />
<!--Your Content to Change-->
<ContentPresenter Content="{Binding CurrentContent}" />
</DockPanel>
</UserControl>
(その代わりにメニューの、あなたのあなたのリボンを持っています。) は、その後、あなたのViewModelにあなたはViewModelにプロパティ
ViewModelBase _currentContent;
public ViewModelBase CurrentContent
{
get { return _currentContent; }
set
{
_currentContent = value;
RaisePropertyChanged(nameof(CurrentContent));
}
}
を持っていますRaisePropertyChanged方法は、ちょうどあなたがMVVMパターンを理解して言うとき、あなたが知っていると思うINotifyPropertyChangedのインターフェイスのにPropertyChangedイベントを、発生させます。
その後RibbonButtonのためのあなたの方法であなたは、単に別のViewModelににCurrentContentプロパティを変更します。
<DataTemplate DataType="{x:Type my:DifferentViewModel}">
<local:MyUserControlForDifferentView />
</DataTemplate>
EDIT:
public void MyCommandMethod()
{
this.CurrentContent = new DifferentViewModel();
}
のviewmodelsのようなDataTemplates経由ビューにマッピングする必要があり、私はWPFで始まったときに私が発見した
最高のチュートリアル、ジョシュの記事でしたスミス:私にとって this
は、あなたの問題がどこにあるか、理解することは本当に難しいです。リボンメニューが含まれているビューの内容を変更する方法がわからないことは間違いないでしょうか? –
まさに!私はそれを行う方法の例を正確に見つけることはできません。特にこれをMVVMコンセプト全体と組み合わせて使用することはできません。 1)リボンメニュー2).NET 4.5に基づいて、最新の.NETバージョンを使用3)MVVMモデルに従う4)リボンメニューとのユーザーのやりとりに応じてコンテンツを表示します...-) 私はそれを私の頭の中でクリックするようにしようとしていますが、その上でハンドルを得ることはできません。私は最終的に私にこのことがどのように作用するかを説明できる簡単な実例を探しています... – aquilares