BandClient の addtileasync メソッドは、Microsoft Band にタイルをインストールする許可を求めるモーダル ダイアログを開きます。ただし、Template10 のような mvvm アプリケーションでは、ダイアログは表示されず、タイルは追加されません。mvvm 実装が与えられた場合、このメソッドはどのように実装されますか?
1 に答える
同じ問題に遭遇しました...私は 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 アプローチについて、バンド開発チームからのフィードバックは大歓迎です!