Caliburn.Micro.Contrib のConductResultを使用して、コンダクターの新しいアイテムをアクティブにしています。Conductor のタイプは でConductor<IScreen>.Collection.OneActive
、すでに 1 つのアイテムが表示され、正しく動作しています。
ただし、アクティブ化された後、新しいアイテムは表示されません。私はすでにチェックしており、コンダクターのActiveItemはその新しいアイテムに設定されており、新しいアイテムもアクティブになっています。View のIsVisibleも new item が 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 はデバッグ目的で存在します。これらは、新しい項目がコンダクター内で実行され (つまり、Items コレクションに含まれている)、新しい項目が ActiveItem として設定されていることを証明します)