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

何度も試した後、最終的に解決策を見つけました。user1545884のように、私もリフレクションを使用しますが、GetValueメソッドが機能しませんSelectedItemオブジェクトは「AddedItems」コレクションに含まれているため、「AddedItems」を使用してGetPropertyメソッドを使用し、オブジェクトが見つかるまでforeachします。

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 に答える
0

リフレクションを試してみましたが、うまくいきました。

string keyCode = "";

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