2013-03-29 4 views
1

J'active un nouvel élément dans le conducteur en utilisant Caliburn.Micro.Contrib ConductResult. Le conducteur est de type Conductor<IScreen>.Collection.OneActive, et il y a déjà un élément qui s'affiche et fonctionne correctement.Nouvel élément activé dans le conducteur ne le montre pas

Le nouvel élément n'est toutefois pas affiché après son activation. J'ai déjà vérifié et le ActiveItem du conducteur est réglé sur ce nouvel article, le nouvel article est également activé. IsVisible de nouvel élément est également définie sur true, donc je ne comprends pas pourquoi il n'est pas visible.

XAML du point de vue du conducteur est assez simple:

<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 et ItemsControl sont là pour des fins de débogage, ils prouvent que nouvel élément est effectué dans le conducteur (collecte des articles contient) et nouvel élément est défini comme ActiveItem)

+0

Avez-vous réussi à résoudre ce problème, car j'ai (environ) le même problème. –

+0

Pour autant que je me souvienne, la cause de ces types de problèmes (élément nouvellement activé dans le conducteur n'est pas montré) était généralement que le conducteur lui-même n'a pas été activé (ou son conducteur principal). Donc, je suggère que vous jetez un oeil, si tous les articles/conducteurs parent sont correctement activés. – mnn

+0

Ils sont, car l'ajout de nouveaux éléments à droite fonctionne très bien. C'est juste ajouter des éléments à gauche qui ne fonctionnent pas. Je pose une question similaire ici avec l'exemple complet http://stackoverflow.com/questions/18835842/pivotitem-isnt-properly-activated-by-conductor-in-caliburn-micro –

Répondre

0

Dans mon cas, j'utilisais IoC.Get<IShell> pour accéder au modèle de vue parente.

Le programme d'amorçage par défaut dit container.PerRequest<IShell, ShellViewModel>(); C'est pourquoi je recevais une autre instance de ma classe ShellViewModel, activé l'élément très bien, mais pas l'interface utilisateur été mise à jour. Une solution consiste à remplacer container.PerRequest par . Un autre est le changement IoC.Get<IShell>() en ((IShell)Parent)

Questions connexes