0

昨日の WP2W8 ロンドン イベントで、既存の WP7 カスタム コントロールを WinRT (5 月 31 日リリース候補版) に移植しようとしました。

このカスタム コントロールには、次のように宣言されたプロパティがありました。

public IMvxCommand Command
{
    get { return (IMvxCommand)GetValue(CommandProperty); }
    set { SetValue(CommandProperty, value); }
}

public static readonly DependencyProperty CommandProperty =
    DependencyProperty.Register("Command", typeof(IMvxCommand), typeof(IconWithTextMenuItem), new PropertyMetadata(null));

private void OnTap(object sender, CantRememberExactEventArgs e)
{
    if (Command == null)
        return;

    if (CommandParameter != null)
        Command.Execute(CommandParameter);
    else
        Command.Execute();
}

何を試しても、これをバインドできませんでした-出力ウィンドウのデバッグバインディングエラーは、バインディングが型MvxRelayCommandをに変換できないことを常に報告しましたIMvxCommand

ただし、IMvxCommandtoMvxRelayCommandまたはICommandthen を変更すると、バインディングは機能しました。

ここの継承ツリーはMvxRelayCommandinherits from IMvxCommandinherits fromでしSystem.Windows.Input.ICommandたが、WinRT がICommandバックグラウンドでファンキーなタイプのリダイレクトを行っているのではないかと思います。

WinRT カスタム コントロールで依存関係プロパティを使用できるかどうIMvxCommandかについて、誰かが洞察を持っていますか?ICommand


更新 - サンプル プロジェクトは次のとおりです: https://github.com/slodge/WinRTInterfaceBindingProblem

4

3 に答える 3

2

System.Windows.Input.ICommandWinRTコントロールで使用できると思います。あなたの例では、依存関係プロパティをではICommandなくとして宣言する必要があるかもしれませんIMvxCommand

于 2012-06-18T21:17:03.413 に答える
0

WP7ICommandではSystem.Windows.Input名前空間にあります。Metra XAML では、Windows.UI.Xaml.Input名前空間にあります。コンパイルできない WP7 バイナリに依存するライブラリを参照しているようです。

于 2012-06-20T08:32:34.167 に答える
0

結局、私はこれについてMSから何も返ってきませんでした。

しかし、サンプルから、それは私たちが対処しなければならない単なるバグであると推測しています:

https://github.com/slodge/WinRTInterfaceBindingProblem/tree/master/App1

于 2012-09-03T20:25:54.987 に答える