【问题标题】:How to cast KeyValuePair passed as Parameter to Command_Executed?如何将 KeyValuePair 作为参数传递给 Command_Executed?
【发布时间】:2012-09-19 01:12:20
【问题描述】:

看似简单的概念,但无法超越。

我有一个命令..._Executed 方法接收一个 KeyValuePair(类型无关紧要),因为它是参数。

myCommand_Executed(object sender, ExecutedRoutedEventArgs e)
    {
        KeyValuePair<System.Type, MyCustomArgs> kvp = e.Parameter as KeyValuePair<Type, MyCustomArgs>;
:
:
:
}

不能这样做,因为它是不可为空的。我该如何做到这一点?我想从 e.Parameter 中提取 KeyValuePair。

感谢任何见解,如有必要,我们很乐意发布更多代码/信息。

【问题讨论】:

  • 我不明白您要在 KVP 中添加的内容。 e.Parameter 中有什么?
  • e.Parameter 包含 System.Type、CustomEventArgs 的组合。我有多个 view_models 回发到主视图模型。我有一个具有 Command="NextPage" CommandParameter="{Binding NextPageToLoad}" 的按钮。 NextPageToLoad 返回读取为 KeyValuePair 的 KeyValuePair。我需要从上述方法中的e.Parameter中提取KeyValuePair。
  • (KeyValuePair)e.Parameter?
  • 我想通了。两件事...... 1. KeyValuePaur 是一个结构。我使它可以为空。 2.您在USIA上方发布的演员表正确。我不能使用“as”

标签: c# .net wpf command eventargs


【解决方案1】:

您必须使用显式转换,而不是像您所做的那样使用隐式转换。
隐式转换:

KeyValuePair<System.Type, MyCustomArgs> kvp = e.Parameter as KeyValuePair<Type, MyCustomArgs>; 

显式转换:

KeyValuePair<System.Type, MyCustomArgs> kvp = (KeyValuePair<System.Type, MyCustomArgs>)e.Parameter; 

【讨论】:

  • 请注意。他们都是明确的。隐式意味着您不编写任何语法并且强制转换会自动发生。例如,从较低的精度到较高的精度。 (int b = 4; 浮动 c = b;)
猜你喜欢
  • 1970-01-01
  • 2011-09-17
  • 2012-12-19
  • 1970-01-01
  • 2013-01-27
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多