0

我有一个带有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>

编辑:似乎是重复的

棱镜请求导航不起作用

4

0 回答 0