我有一个带有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>());
但是导致错误。
NEXT 尝试
regionManager.Regions["mainContentRegion"].Add(container.Resolve<MusicGeneration>());
真正将视图添加到管理员管理的区域列表中,但仍然永远不会删除原始(StartupControl
)视图。
我也试过这个
regionManager.RequestNavigate("mainContentRegion", new Uri("MusicGeneration", UriKind.Relative));
原始视图,即StartupControl
永远不会从rootVisual中删除。
两个视图的完整代码列表
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>
编辑:似乎重复