【发布时间】:2010-06-30 14:31:41
【问题描述】:
我的应用程序中有一个带有一些按钮和选项卡以及一些模块的外壳。每个模块都有一个视图,其中包含一些元素,如数据网格、堆栈面板、文本框等。它们都有一个名称属性。现在,当我在 shell 上触发一个事件(比如单击一个按钮)时,我希望能够使用这些元素(比如清除用户在提供的文本框中写入的所有信息)。问题是,shell 看不到这些元素,也无法识别它们。有没有办法访问它们?
感谢您的任何建议。
【问题讨论】:
我的应用程序中有一个带有一些按钮和选项卡以及一些模块的外壳。每个模块都有一个视图,其中包含一些元素,如数据网格、堆栈面板、文本框等。它们都有一个名称属性。现在,当我在 shell 上触发一个事件(比如单击一个按钮)时,我希望能够使用这些元素(比如清除用户在提供的文本框中写入的所有信息)。问题是,shell 看不到这些元素,也无法识别它们。有没有办法访问它们?
感谢您的任何建议。
【问题讨论】:
我建议您采用类似于 Stocktrader 参考实现对 CompositeCommands 所做的方法。基本上,CompositeCommand 是包含其他 ICommand 集合的 ICommand 的实现。在 RI 中,CompositeCommands 作为静态属性公开在一个集中可用的类上。
在你的情况下,你可以有一个复合的 ClearCommand。 shell 的视图模型会将其暴露给 shell 视图,这样您就可以将清除按钮连接到它。
然后,各种模块的视图模型将连接到这个 ClearCommand:
GlobalCommands.ClearCommand.RegisterCommand(new DelegateCommand(x => ClearAllFields()));
【讨论】: