问题标签 [regionadapter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4809 浏览

wpf - Prism RegionAdapter - 删除然后添加视图

我有一个包含 AvalonDock 的 prism/wpf/mef 解决方案。我创建了一个RegionAdapterBase<Pane>类来处理从 AvalonDock 创建和删除窗格。

这是我遇到的问题:

  1. 我单击菜单中的一个按钮,一个视图注册到一个区域并显示在我的DocumentPane
  2. 我单击 AvalonDock 中的关闭按钮以关闭选项卡并删除视图
  3. 我单击相同的菜单按钮再次将其添加回来
  4. 我收到错误:

“指定元素已经是另一个元素的逻辑子元素。先断开它。”

所以......这告诉我有东西挥之不去,我需要删除,但我不知道它在哪里。下面是我的 RegionAdapter 中的一些代码:

从我的调试行中,DocumentPane视图和区域视图正在被正确销毁......当我单击以将项目添加回视图时,我在以下行中收到上述错误消息:

这是按下菜单按钮时运行的模块中的代码:

知道我错过了什么吗?

0 投票
1 回答
4680 浏览

wpf - WPF,棱镜,MEF。在模块中注册区域适配器?

是否可以在模块中注册区域适配器?

我的 Shell.xaml 中有一个 ContentControl 设置为区域“MainRegion”,该区域当前填充有包含 AvalonDock 控件的模块。我目前在我的 Shell 应用程序中有 AvalonDock 区域适配器,但想将它放在模块中并自行注册。我想保持这个程序的灵活性,这样如果我们决定使用 AvalonDock 以外的东西,我可以轻松地使用另一个模块,而无需修改我的 Shell 程序集(移除 avalondock 区域适配器)。

我想这样的事情是可能的。有没有人这样做过?

现在在引导程序中是:

这就是我想在模块而不是 Shell 引导程序中执行的操作。

0 投票
1 回答
1003 浏览

silverlight - Silverlight BusyIndi​​cator 内容禁用

我正在使用 Silverlight 工具包中的繁忙指示器。我将 IsBusy 属性绑定到我的视图模型中的属性以禁用内容并让它显示 BusyIndi​​cator。我还使用 Prism 的 RegionManager 的 TabControlRegionAdapter 将视图注入到选项卡控件中。

通常这工作正常,但我注意到一个奇怪的错误。场景是我禁用一个视图的内容,切换到不同的选项卡,使用 eventAggregator 引发事件,该事件在其 viewModel 中将第一个视图的 IsBusy 设置为 false,然后切换回第一个选项卡。如果我这样做,BusyIndi​​cator 就消失了,但内容仍然被禁用。

想法?

0 投票
1 回答
1982 浏览

devexpress - 用于 DevExpress 的自定义 RegionAdapter 的 RegionManager 问题

我为 DevExpress 功能区编写了一个自定义区域适配器。

在我的 shell 的 xaml 中,我注册了一个区域

在后面的代码中,我正在导入 RegionManager 的一个实例。按需引导程序正在调用我的区域适配器,但我的 RegionManager 中没有该区域的条目。我也试过

但没有成功。奇怪的是

对我有用,但 rManager.RequestNavigate 没有。

任何想法?

编辑

我找到了解决这个问题的方法。我必须手动注册我的地区:

0 投票
1 回答
1716 浏览

c# - 动态创建选项卡并在其中注入视图

我使用 AvalonDock 具有类似 vs 的停靠风格,并使用 prism 在我的应用程序中注入视图。
基本上,用户将在侧面有一个面板,每个视图可加载一个按钮,每次他按下一个按钮时,我想在我的 AvalonDock 的 DocumentPane 上创建一个新选项卡,并在其中注入正确的视图。

现在我的印象是棱镜适合这种情况,但我无法弄清楚。

此外,我偶然发现了 Markus Raufer 的 DocumentPane 和 DockablePane 区域适配器,已将其添加到我的项目中并在引导程序中注册了映射。
这使我可以编译解决方案(所以我猜我已经接近了)。

到目前为止,我这样做:

在我的Shell我有一个地方:

在我的代码隐藏中,在引导等之后,我有一个地方可以:

执行此行不会向用户显示更多内容,但如果我执行两次,它会出错,说明视图已经注册(所以它确实添加了一些东西!)。

此外,当我放置一个常规的 ContentControl 时,标记它prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}然后在其中添加一个 UserControl,就像我将它添加到 AvalonDock 的 DocumentPane 一样,它可以工作。怪异的

我究竟做错了什么?
谢谢,

粑粑

编辑:
如果像这样定义 MainTabControlRegion,实际上添加了第一个视图,现在我添加了另一个视图(不同的 UserControl)它没有显示它,但是 WPF Inspector 说它在那里。
从我的角度来看,它确实将 UserControls 添加到一个区域,但它不知道如何为我添加到 DocumentPane 的每个 UserControl 创建一个新选项卡。
由于我没有具体说明,我可能遗漏了一段代码?

每次我添加用户控件并将其插入其中时,我都希望它创建一个新选项卡。

编辑2:解决方案->在这里

0 投票
3 回答
214 浏览

silverlight - 自定义 StackPanel Prism RegionAdapter 以支持订购

我有以下用于 StackPanel 的 RegionAdapter 实现,但我需要对与区域关联的项目进行严格排序,有人可以帮忙吗?

我希望将自己注册到区域的视图能够控制那里的位置,也许是某种索引号

0 投票
2 回答
316 浏览

wpf - 重新导航到多视图区域中的特定视图

我正在开发一个使用 Microsoft Prism 框架的 WPF 应用程序。该应用程序的一个方面是一个“模态”区域,它可以容纳覆盖整个窗口的任意数量的模态窗口。随着更多视图被导航到该区域,每个窗口都会向右滑动以允许新窗口占据屏幕的中心。这是一个更直观的解释:

当“模态”区域包含单个视图时:

当。。。的时候

当另一个视图添加到区域时:

当另一个视图添加到区域时

当添加更多视图时:

当添加更多视图时

我使用一个自定义控件来管理其子项的动画和显示。下面是控件的 custom方法RegionAdapterAdapt样子:

我的问题是: 导航回早期窗口的最佳方式是什么? 现在,我知道触发上述RemoveChild方法的唯一方法是从区域中显式删除视图,这需要我在某处保留当前在该区域中的所有视图的列表:

RegionAdapter理想情况下,我将能够使用 Prism 的“日志”概念向后导航,但是当重新导航到该区域中的视图时,我看不到响应的方式。

任何提示将不胜感激。

编辑

通过遵循 GOstrowsky 的建议(请参阅已接受答案中的评论),我能够实现此功能 - 我将区域适配器更改为仅在该区域中维护一个活动视图(当前位于屏幕中心的视图)。然后我可以通过myRegion.ActiveViews.FirstOrDefault().

另一个编辑

此后,我再次更改了此实现,因为我们需要能够删除当前在该区域中的任何视图,而不仅仅是最后一个。有关详细信息,请参阅接受的答案。

0 投票
2 回答
1713 浏览

c# - 自定义区域适配器 (PRISM)

我已经为 ToolBar 实现了一个自定义区域适配器,如此链接http://compositewpf.codeplex.com/discussions/250892中所述。我收到此错误:“ToolBarRegionAdapter”不包含采用 0 个参数的构造函数。这是我的代码:

我已经在我的引导程序中覆盖了 ConfigureRegionAdapterMappings() 方法(我的引导程序继承自 MefBootstrapper)。这里的代码:

编译时出现此错误:“ToolBarRegionAdapter”不包含采用 0 个参数的构造函数。这实际上是真的,构造函数采用 IRegionBehaviorFactory 但我的代码中没有该对象。但是在我看到的示例中,区域适配器是在没有任何参数的情况下实例化的。知道为什么吗?谢谢!

0 投票
2 回答
299 浏览

wpf - 使用 PRISM 导航时在自己的 RegionAdapter 中获取视图

我正在使用 PRISM 并尝试学习如何正确使用它。到目前为止,我创建了 3 个视图:

  • MainWindow:这是我的外壳,包含 2 个导航按钮:ViewA,ViewB
  • 视图A
  • 视图B

Shell 托管一个区域(来自 SyncFusion 的 DockManager)来注入视图。在 Shell 的 ViewModel 中,我使用 DelegateCommand 进行导航:

视图在 Bootstrapper 中注册

当我使用简单的 TabControl 来托管我的区域时,这可以正常工作。为了使用 SyncFusion Toolkit 中的 DockManager,我创建了一个适配器并覆盖了该函数:

我现在要处理的是视图导航到的情况,该视图已包含在我的 DockingManager 中。在这种情况下,应将视图设置为活动的。为此,我尝试订阅该地区的“导航”事件。这是正确的方法吗?如何从 Navigation-URI 获得正确的视图?或者我应该尝试在我的视图模型中处理该场景(使用来自 INavigationAware 的 OnNavigatedTo)。

0 投票
0 回答
53 浏览

c# - SfNavigationDrawer 上的 Prism RegionAdapter

我正在尝试在 Syncfusion 导航抽屉(https://help.syncfusion.com/wpf/navigation-drawer/getting-started)上实现一个 RegionAdapter。

我看到它使用变量(对象)ContentView 来显示视图,所以我写了这个:

此代码段执行以下行为:(https://i.imgur.com/kHVFfQh.mp4)当我单击已加载的视图时,它不会更改 ContentView 中的视图(不调用 CollectionChanged)。

预期的行为是它应该显示视图。

我怎么能做到这一点?

感谢您的阅读!