0

アイテムが入ったシェル (ウィンドウ) がありContentControlます

<ContentControl regions:RegionManager.RegionName="mainContentRegion"/>

私はUnity別のプロジェクトで登録する2つのビューを持っています

RegionManager.RegisterViewWithRegion("mainContentRegion", () => new MusicGeneration());

RegionManager.RegisterViewWithRegion("mainContentRegion", () => new StartupControl(Container));

アプリケーションの起動時StartupControlに、必要に応じてリージョンに が表示されます。しかし、私は を に置き換えようとしていStartupControlますが、MusicGeneratorこれは実りのない努力であることが証明されています。

最初は、そのようにビューを変更しようとしました (ContentControl一度に 1 つのビューしかホストしないため)。

regionManager.Regions["mainContentRegion"].Activate(container.Resolve<MusicGeneration>()); 

しかし、エラーを引き起こします。

の試み

regionManager.Regions["mainContentRegion"].Add(container.Resolve<MusicGeneration>()); 

マネージャーが管理するリージョンのリストにビューを追加しますが、元の ( StartupControl) ビューを削除することはありません。

私もこれを試しました

regionManager.RequestNavigate("mainContentRegion", new Uri("MusicGeneration", UriKind.Relative));

元のビュー、つまりStartupControlrootVisual から削除されることはありません。

2 つのビューの完全なコード リスト

StartupControl.xaml.cs

public partial class StartupControl : IRegionMemberLifetime
{
    public bool KeepAlive
    {
        get { return false; }
    }

    public StartupControl(IUnityContainer container)
    {
        InitializeComponent();
        DataContext = container.Resolve<StartupViewModel>();
    }
}

StartupControl.xaml

<UserControl x:Class="StartupModule.Views.StartupControl"
             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" >

    <Grid Name="Container">
         has content here which displays correctly
    </Grid>
</UserControl>

MusicGenerator.xaml.cs

using Microsoft.Practices.Prism.Regions;

namespace GeneticMusic.Views
{
    /// <summary>
    /// Interaction logic for StartupControl.xaml
    /// </summary>
    public partial class MusicGeneration : IRegionMemberLifetime
    {
        public bool KeepAlive
        {
            get { return false; }
        }

        public MusicGeneration()
        {
            InitializeComponent();
        }
    }
}

GenerateMusic.xaml

<UserControl x:Class="GeneticMusic.Views.MusicGeneration"
             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"
             xmlns:toolkit="http://schemas.xceed.com/wpf/xaml/toolkit"
             mc:Ignorable="d" >


    <Grid Name="Container">
        content here... displays correctly
    </Grid>
</UserControl>

編集:重複しているようです

Prism RequestNavigate が機能しない

4

0 に答える 0