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