0

我很想使用它,但我一生都无法弄清楚如何将物品绑定到它。

我想看一个简单的例子,比如

壳牌.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 甚至是常规选项卡控件......

4

1 回答 1

0

我认为您面临的问题是,当您真正想要使用 View Injection 时,您正在使用 View Discovery。

使用 View Discovery,您可以将视图注册到一个区域,并且当该区域显示时,每个视图都会动态加载。我的猜测是,在该区域可见之后,您正在向该区域注册视图。这意味着您的视图将永远不会被实例化,因为 Region 已经可见。

视图注入动态地将视图插入到已经存在的区域中。我认为这就是你想要做的。您的外壳很好,但您需要在 Module Initialize() 调用中添加以下内容:

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

这应该可以解决问题。

注意:您可以通过调用 IRegion 上的 Activate/Deactivate 方法来显示/隐藏区域中的视图,如下所示:

regionmanager.Regions[RegionNames.TestRegion].Activate(hello);
于 2010-02-10T16:57:17.630 回答