2009-08-13 13 views
0

Ich würde gerne verwenden, aber kann nicht für das Leben von mir herausfinden, wie man Elemente an sie binden.Prism und AnimatedTabControl

Ich möchte ein einfaches Beispiel, um zu sehen, so etwas wie

Shell.xaml

<Controls:AnimatedTabControl 
    x:Name="TestTab" 
    SelectedIndex="0" 
    VerticalAlignment="Stretch" 
    cal:RegionManager.RegionName="{x:Static inf:RegionNames.TestRegion}" 
    Grid.Row="1" 
/> 

-

using Microsoft.Practices.Composite.Modularity; 
using Microsoft.Practices.Composite.Regions; 

namespace HelloWorldModule 
{ 
    public class HelloWorldModule : IModule 
    { 
     private readonly IRegionManager regionManager; 
     public HelloWorldModule(IRegionManager regionManager) 
     { 
      this.regionManager = regionManager; 
     } 

     public void Initialize() 
     { 
     regionManager.RegisterViewWithRegion(
      RegionNames.SecondaryRegion, typeof(Views.HelloWorldView)); 
     regionManager.RegisterViewWithRegion(
      RegionNames.TestRegion, typeof(Views.TestTab)); 
     } 
    } 
} 

Welche Code benötigt wird, mehrere Tabs haben das animieren bei Änderung in . Ich kann nicht herausfinden, wie man etwas an AnimatedTabControl oder sogar ein reguläres Registersteuerelement bindet ...

Antwort

0

Ich denke, das Problem, das Sie gegenüberstellen, ist, dass Sie View Discovery verwenden, wenn Sie tatsächlich View Injection verwenden möchten .

Mit View Discovery registrieren Sie Ansichten mit einer Region und wenn die Region angezeigt wird, wird jede der Ansichten dynamisch geladen. Meine Vermutung ist, dass Sie Ansichten für eine Region registrieren, nachdem die Region sichtbar gemacht wurde. Dies bedeutet, dass Ihre Ansichten niemals instanziiert werden, da die Region bereits sichtbar gemacht wurde.

Ansicht Injection fügt eine Ansicht dynamisch in eine bereits vorhandene Region ein. Ich denke, das ist was du machen willst. Ihre Schale ist in Ordnung, aber Sie werden die folgenden zu Ihrem Modul initialisieren() -Aufruf hinzufügen müssen:

Views.HelloWorldView hello= new Views.HelloWorldView(); 
regionmanager.Regions[RegionNames.TestRegion].Add(hello); 

Dies sollte den Trick.

NB: Sie können Ansichten in einer Region ein-/auszublenden, indem das Aktivieren/Deaktivieren-Methode auf dem iRegion Aufruf wie folgt:

regionmanager.Regions[RegionNames.TestRegion].Activate(hello);