1

BandClient の addtileasync メソッドは、Microsoft Band にタイルをインストールする許可を求めるモーダル ダイアログを開きます。ただし、Template10 のような mvvm アプリケーションでは、ダイアログは表示されず、タイルは追加されません。mvvm 実装が与えられた場合、このメソッドはどのように実装されますか?

4

1 に答える 1

0

同じ問題に遭遇しました...私は Template10 なしで Caliburn Micro を使用していますが、全体的なアーキテクチャは似ていると思います。私が判断できる限り、そのポップアップは Window.Current が取得しようとするフレームであると想定して実装され、認証ダイアログに移動し、ユーザーが承認した後に戻ってきます。私はいくつかのアプローチを試しましたが、現在私にとってうまくいっているのは(私がわくわくしていない完全なクラッジですが)、上記のようにフレームを注入することです。ただし、その前に、ShellView をアプリのパブリック プロパティにコピーして、タイルを追加した後に戻ることができるようにします。私のコードは基本的に次のようになります。

(設定ビューで) タイルを追加する必要がある場合:

        ((App)Application.Current).ShellHolder = Window.Current.Content;

        Frame rootFrame = Window.Current.Content as Frame;
        if (rootFrame == null)
        {
            rootFrame = new Frame();
            Window.Current.Content = rootFrame;
        }

        rootFrame.Navigate(typeof(BandAddTileView));
        Window.Current.Activate();

次に、BandTileView でロジックが完成したら、次のように呼び出します。

    private void ResetShell(BandTileResult result) {
        var app = (App)Application.Current;
        if (app == null) return;

        app.TileResult = result;

        Window.Current.Content = (UIElement)app.ShellHolder;
        Window.Current.Activate();
    }

次に、ShellView が戻ってきたときに、設定ビューに戻って BandTileResult を処理するロジックをいくつか用意します。

私が言ったように、それはクラッジであり、完全にエレガントではありませんが、問題なく動作しているようで、BandAddTileView に少しスタイルを設定することで、アプリ ユーザーに非常に優れたユーザー エクスペリエンスを提供します。

より良い MVVM アプローチについて、バンド開発チームからのフィードバックは大歓迎です!

于 2015-11-15T04:24:39.640 に答える