【问题标题】:One event for several forms一种事件,多种形式
【发布时间】:2013-01-22 22:09:55
【问题描述】:

我目前面临一项琐碎的任务,但我想不出解决方案。

为了解释它应该如何工作的理论......

有一种身份验证形式。 http://prntscr.com/pwat5

此表单适合TabControl -> TabItemTabControl 依次放置在组件Grid 上。 实际上,在该键输入上是一个事件,通过单击身份验证并将登录表单更改为另一个表单。

这种形式的认证,我需要更多,我是通过以下方式进行的,并将表单数据放置到特定的组件中,结构如下:

Grid
 ListBoxItem
  MyAuthForm
   ... //Well, actually imposed on the rest of the crap form MyAuthForm

对于我的表单MyAuthForm 的相同副本,我克隆了对象,更准确地说,我将ListBoxItem 连同其所有内容一起克隆到新对象中,从而将其添加到组件网格中,即获取一个新的克隆对象。

Grid
 ListBoxItem
  MyAuthForm
   ... //Well, actually imposed on the rest of the crap form 
 ListBoxItemСlone
  MyAuthFormСlone
   ... //And so on

但问题是我的原始对象携带了各种事件,但克隆的对象无法传递原始对象中的某些事件。

如何解决这个问题?以某种方式克隆一个对象可以引用原始对象的事件吗?

总的来说,尽我所能解释,我希望最容易理解的人概述了我想要的东西,非常感谢你的任何提示和想法,第二天我遇到了这个案子,到目前为止还没有想法。

ps 在每个克隆对象的手册中,我不能为这种形式的身份验证创建事件就足够了,一切都必须快速,所以唯一的选择是以某种方式参考已经存在的事件,wpf 允许这种可能性吗?

【问题讨论】:

  • 我不得不承认我不明白你想要达到什么目的以及你的问题是什么。

标签: c# wpf forms events


【解决方案1】:

也许由于您正在使用 WPF,如果您将事件绑定到命令或任何其他机制,那么克隆的窗口,给定相同的数据上下文将针对相同的方法,您的问题将得到解决。

希望我理解正确。

过去我在 WPF 中使用过 Caliburn,有一个名为 ActionMessage 的东西可能对你有用。

它在数据上下文中冒泡,直到找到具有指定名称的方法,否则抛出异常。也许您可以使用它,再加上 2 个克隆共享数据上下文实例的事实,使您能够使它们都指向相同的身份验证方法。

希望我做对了。

【讨论】:

  • 如果可以的话,你能举出更多例子吗?
  • 我不确定您的代码的上下文是什么,所以这就是我尽可能笼统地解释的原因。您基本上需要做的就是修改现有代码以使用 ActionMessages 在触发事件时调用您想要的方法,并且在创建克隆时,您必须将其 datacontext 设置为您正在克隆的实例的数据上下文(如果不是通过克隆自动完成),它应该可以工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 2010-10-01
  • 2010-10-06
相关资源
最近更新 更多