我有一个带有ContentControl
项目的外壳(窗口)
<ContentControl regions:RegionManager.RegionName="mainContentRegion"/>
我有两个视图,我Unity
在单独的项目中注册
RegionManager.RegisterViewWithRegion("mainContentRegion", () => new MusicGeneration());
和
RegionManager.RegisterViewWithRegion("mainContentRegion", () => new StartupControl(Container));
在应用程序启动时,StartupControl
根据需要在区域中显示。但是,我正试图让被证明是徒劳的吞噬StartupControl
所取代。MusicGenerator
起初我尝试改变视图(因为一次ContentControl
只托管一个视图')
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 中删除。
两个视图的完整代码清单
启动控制.xaml.cs
public partial class StartupControl : IRegionMemberLifetime
{
public bool KeepAlive
{
get { return false; }
}
public StartupControl(IUnityContainer container)
{
InitializeComponent();
DataContext = container.Resolve<StartupViewModel>();
}
}
启动控制.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();
}
}
}
生成音乐.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>
编辑:似乎是重复的