アイテムが入ったシェル (ウィンドウ) があり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));
元のビュー、つまりStartupControl
rootVisual から削除されることはありません。
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>
編集:重複しているようです