C# 导体中激活的新项目不显示

C# 导体中激活的新项目不显示,c#,caliburn.micro,contentcontrol,C#,Caliburn.micro,Contentcontrol,我正在使用Caliburn.Micro.Contrib激活导体中的新项目。导体的类型为Conductor.Collection.OneActive,并且已经有一个项目显示并正常工作 但是,新项目在激活后未显示。我已经检查过了,列车长的活动项被设置为新项目,新项目也被激活。新项目的视图的IsVisible也设置为true,所以我不明白为什么它不可见 导体视图的XAML非常简单: <UserControl x:Class="..." xmlns="http://sch

我正在使用Caliburn.Micro.Contrib激活导体中的新项目。导体的类型为
Conductor.Collection.OneActive
,并且已经有一个项目显示并正常工作

但是,新项目在激活后未显示。我已经检查过了,列车长的活动项被设置为新项目,新项目也被激活。新项目的视图的IsVisible也设置为true,所以我不明白为什么它不可见

导体视图的XAML非常简单:

<UserControl x:Class="..."
             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:cal="http://www.caliburnproject.org"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition Height="auto" />
            <RowDefinition />
        </Grid.RowDefinitions>

        <TextBlock Grid.Row="0" Text="{Binding Path=ActiveItem, Converter={StaticResource objectTypeConverter}}" Margin="5" />
        <ItemsControl Grid.Row="1" ItemsSource="{Binding Items}" BorderBrush="Aqua" BorderThickness="10 ">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Converter={StaticResource objectTypeConverter},ConverterParameter=something}" Margin="5" />
                    </StackPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
        <ContentControl Grid.Row="2" x:Name="ActiveItem" />
    </Grid>
</UserControl>


(TextBlock和ItemsControl用于调试目的;它们证明新项是在conductor中执行的(即Items集合包含它),并且新项被设置为ActiveItem)

在我的例子中,我使用的是
IoC.Get
访问父视图模型

默认引导程序显示
container.PerRequest()
这就是为什么我得到了我的
ShellViewModel
类的另一个实例,激活了该项,但没有更新UI

一种修复方法是将
container.PerRequest
替换为
container.Singleton

另一个是将
IoC.Get()
更改为
((IShell)父项)

您是否已设法解决此问题,因为我有(大约)相同的问题。据我所知,此类问题(导体中新激活的项目未显示)的原因通常是导体本身未激活(或其父导体)。因此,我建议您看看,是否所有的父项/导体都被正确激活。它们是正确的,因为将新项添加到右侧可以正常工作。只是在左边添加了一些不起作用的项目。我在这里用完整的例子问了一个类似的问题,不幸的是,我不知道是什么导致了这个问题。我已经解决了我的问题,以后Caliburn.Micro的导体/屏幕没有出现任何问题。你能通过电子邮件分享一些代码吗?我的dvdstelt在outlook.com上。非常感谢!