首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF,棱镜/统一-结合异常

WPF,棱镜/统一-结合异常
EN

Stack Overflow用户
提问于 2016-05-19 20:17:19
回答 1查看 159关注 0票数 0

我正在开发一个这种类型的C#应用程序: WPF/Prism/Unity (MVVM、regions、模块化、用于Telerik RadDocking控件的自定义RegionAdapterBase (在RadDocking级别,而不是窗格组级别)和窗格工厂,用于映射哪个窗格组(左下)应该出现选项卡)。

问题:

除了DocumentHost,一切都很好。我可以让文档出现在那里,但它们最终都有相同的标签标题。你能帮我理解为什么会这样吗?

更多背景信息:

对于DocumentHost中的所有文档,我有一个引用视图/视图模型的模块。视图有一个文本框,用于查询文本框中查询返回的表数据的数据。考虑一下,右键单击一个表并选择选择查看表中的数据。

屏幕截图

当用户右击一个表时,我有一个命令绑定到"Explorer“窗格中的上下文菜单"Select”选项,该命令包含以下代码:

代码语言:javascript
复制
_container.Resolve<SqlAndDataGridModule>(new DependencyOverride<IConversionExplorerObject>(obj)).Initialize();

"obj“是什么意思?我正在尝试将我单击的表的名称传递给document模块,以便设置选项卡标题。同样,除了“覆盖所有标签标题”问题外,这是可行的。所有标签都以我最近打开的标签命名。

因此,SqlAndDataGridModule有一个初始化,我在其中执行以下操作:

代码语言:javascript
复制
public void Initialize()
{
    // Register view and view model types
    _container.RegisterType<SqlAndDataGrid>();
    _container.RegisterType<ISqlAndDataGridView_ViewModel, SqlAndDataGridView_ViewModel>();

    // Create a view model
    SqlAndDataGridView_ViewModel s = new SqlAndDataGridView_ViewModel(_repository, _eventAggregator, _manager);

    // Set the property TabTitle to table's name
    // This property is bound to RadDocumentPane's header
    s.TabTitle = ((ConversionExplorerObject)_explorerObject).Name;

    // Create view and inject the view model with the tab title
    SqlAndDataGrid sv = _container.Resolve<SqlAndDataGrid>(new DependencyOverride<ISqlAndDataGridView_ViewModel>(s));

    // Register the instance in the container
    _container.RegisterInstance(s.TabTitle, sv);

    // Register the view with the DockRegion
    _manager.RegisterViewWithRegion(RegionNames.DockRegion, () => _container.Resolve<SqlAndDataGrid>(s.TabTitle));
}

我已经确认我正在创建独立的视图和视图模型,甚至可以在调试器中看到不同的选项卡标题。但似乎在绑定到窗格标题的某个地方,有些地方出错了。

我相信这是一个有约束力的问题,而不是一个Telerik问题,这就是为什么我在这里而不是那里张贴。任何帮助都很感激,如果有帮助的话,我很乐意提供更多的信息。谢谢,克里斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-20 15:19:59

我解决了我的问题。如果这对任何人都有帮助,我的问题是,在我的SqlAndDataGridModule的视图模型中,我订阅了"select all rows“事件。这意味着视图模型的每个实例(每个选项卡一个)都订阅了事件,并且每个视图模型都绑定到新选择的资源管理器对象。

我应该只订阅shell的视图模型,因为在那里我实例化了SqlAndDataGridModule的一个新实例(以及它的视图/视图模型)。故事的寓意--当心什么事件被发表了,以及你如何订阅它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37333211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档