我是棱镜的新手,所以也许我做错了。我有一个带有同步融合选项卡控件的应用程序,可以将视图分配给它。
这很好用。为了将标题添加到 TabItemExt,我添加了一个 RegionAdapter。
适应功能:
protected override void Adapt(IRegion region, TabControlExt regionTarget)
{
region.Views.CollectionChanged += (s, e) =>
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
foreach (Control item in e.NewItems)
{
if (item is TabItemExt)
regionTarget.Items.Add(item);
else
{
var foo = new TabItemExt();
foo.Content = item;
Binding myBinding = new Binding("Header");
myBinding.Source = item.DataContext;
foo.SetBinding(TabItemExt.HeaderProperty, myBinding);
foo.DataContext = item.DataContext;
regionTarget.Items.Add(foo);
}
}
break;
case NotifyCollectionChangedAction.Remove:
foreach (TabItemExt item in e.OldItems)
{
regionTarget.Items.Remove(item);
}
break;
}
};
}
在这种情况下,Prism 会丢失一些导航内容,因为当我导航到视图时,不会调用 IsNavigationTarget 方法。
如果我不使用这个 RegionAdapter,它就会被调用。
我该怎么做?