0

我目前正在为 Windows 8 和 Windows Phone 8 开发应用程序。视图的构建必须非常动态,因此我必须为此使用大量数据模板。在这些数据模板中,我使用 Galasoft MVVMLight EventToCommand,因为我需要事件参数,所以我还使用 PassEventArgsToCommand="True"。

<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding Path=SelectionChangedCommand}" 
                        PassEventArgsToCommand="True"/>
</i:EventTrigger>

问题是,我需要使用这些事件参数的类(我的命令发生的地方)必须在可移植类库中,因此我不能在这些类中使用平台特定的事件参数。

private void SelectionChanged(SelectionChangedEventArgs sel)
{
     //do something
}

就我而言,我必须使用 SelectionChangedEventArgs、DateTimeValueChangedEventArgs 和 KeyEventArgs。

有什么办法可以使这项工作?

4

2 回答 2

0

我尝试了反射,它确实有效。

string keyCode = "";

        if (args != null)
        {
            PropertyInfo p = args.GetType().GetProperty("Key");
            keyCode = p.GetValue(args, null).ToString();
        }
于 2013-08-08T19:33:30.393 回答
0

经过我很多尝试,我终于找到了我的解决方案。像 user1545884 一样,我也使用 Reflection,但 GetValue 方法对我不起作用 SelectedItem 对象出现在“AddedItems”集合中,所以我使用“AddedItems”的 GetProperty 方法,然后我在其中找到我的对象,直到在其中找到我的对象。

IEnumerable ie = (parameter.GetType().GetRuntimeProperty("AddedItems").GetValue(parameter) as IEnumerable);
foreach (var item in ie)
{
    if (item is Store_Province)
    {

    }
}
于 2013-08-12T12:07:07.217 回答