2009-08-13 74 views
0

我很想使用這個,但不能爲我的生活弄清楚如何將項目綁定到它。Prism和AnimatedTabControl

我想看到一個簡單的例子,像

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)); 
     } 
    } 
} 

需要什麼樣的代碼有多個選項卡在TestRegion的動態變化。 我似乎無法弄清楚如何將任何東西綁定到AnimatedTabControl或甚至常規選項卡控件...

回答

0

我認爲你面臨的問題是,當你真的想使用視圖注入。

通過查看發現,您可以向區域註冊視圖,並且在區域顯示時,每個視圖都會動態加載。我的猜測是,在區域變得可見之後,您正在註冊一個區域的視圖。這意味着您的視圖將永遠不會被實例化,因爲區域已被顯示。

View Injection動態地將視圖插入已存在的區域。我認爲這是你想要做的。你的shell很好,但你需要添加以下內容到你的Module Initialize()調用中:

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

這應該可以做到。

注意:您可以顯示/調用像這樣的激活/停用的方法的iregion隱藏區域的觀點:

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