大家好:
这次我用Accordion作为了菜单栏的容器,并配置了一个适配器,但是我调试的时候,并没法有发现有进入适配器。代码如下:
<Grid x:Name="LayoutRoot" Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*" />
<ColumnDefinition Width="0.7*" />
</Grid.ColumnDefinitions>
<tk:Accordion Grid.Column="0"
prism:RegionManager.RegionName="MenuRegion" />
<sdk:TabControl Grid.Column="1"
prism:RegionManager.RegionName="ContentRegion"
DisplayMemberPath="Title"/>
</Grid>
适配器代码如下:<pre lang="x-c#">namespace SilverlightTEST
{
public class AccordionAdapter : RegionAdapterBase<Accordion>
{
public AccordionAdapter(IRegionBehaviorFactory regionBehaviorFactory)
: base(regionBehaviorFactory)
{ }
protected override void Adapt(IRegion region, Accordion regionTarget)
{
region.ActiveViews.CollectionChanged += (sender, args) =>
{
switch (args.Action)
{
case NotifyCollectionChangedAction.Add:
foreach (AccordionItems view in args.NewItems)
{
AccordionItem itemn = new AccordionItem();
itemn.Header = view.TX;
itemn.Content = view.TX;
regionTarget.Items.Add(itemn);
}
break;
}
};
}
protected override IRegion CreateRegion()
{
return new AllActiveRegion();
}
}
}
调用代码如下:<pre lang="x-c#"> public class SliverlightModule : IModule
{
public SliverlightModule(IRegionManager regionManager)
{
if(regionManager == null)
{
throw new ArgumentNullException("regionManager");
}
RegionManager = regionManager;
}
private IRegionManager RegionManager { get; set; }
public void Initialize()
{
//CrmCommands.OpenCustomerViewCommand.RegisterCommand(new DelegateCommand<object>(ExecuteOpenCustomerView));
RegionManager.AddToRegion("MenuRegion", CreateModuleDefinition());
//RegionManager.AddToRegion("MenuRegion", new SilverlightControl1());
}
public AccordionItems CreateModuleDefinition()
{
AccordionItems item = new AccordionItems();
// return "<tk:AccordionItem Header='DEMO1'><ListBox><ListBoxItem >2222222222</ListBoxItem></ListBox></tk:AccordionItem>";
item.TX = "managerment";
return item;
}
}
RegionManager.AddToRegion("MenuRegion", CreateModuleDefinition());
此处代码报错,未将对象引用到实例。