1

Visual Studio 2013 を使用して、 MvvmCrossに基づく Windows 8.1 用の新しい Windows ストア アプリケーションを作成しています。

まず、 Core.txt to-do ファイルの指示に従って、ビュー モデルを使用して PCL .Coreクラス ライブラリを作成します。

次に、Windows Store UI.txt to-do ファイルの指示に従って、 .Storeアプリケーションを作成します。ナビゲーション フレームワークを使用したいので、ページをBasic Pageに置き換えています。FirstView.xaml FirstView.xaml

指示によると、LayoutAwarePageクラスは継承する必要がありますが、VS2013/8.1 Store プロジェクトには含まれなくなったため、代わりにページを型に変更してMvxStorePageいます。LayoutAwarePage.csFirstView.xamlMvxStorePage

<views:MvxStorePage x:Name="pageRoot" x:Class="App.Store.Views.FirstView"
 ... >
...
</views:MvxStorePage>

この変更により、アプリを起動するとFirstViewが表示されますが、view-model バインディングが機能しません。Windows ストア 8.1 アプリで MvvmCross ビュー間モデル バインディングを設定する正しい手順はどれですか?

4

1 に答える 1

4

Windows ストア UI.txt to-do ファイルの指示の一部を忘れたようです。

ビュー フォルダーとビュー (BasicPage に基づく xaml.cs および .xaml) を追加します。これにより、Common フォルダーに 5 つのファイルが追加されます。
- Common/LayoutAwarePage.cs の継承を Cirrious.MvvmCross.WindowsStore.Views.MvxStorePage に
変更します - Common/LayoutAwarePage.cs を変更します - OnNavigatedTo および OnNavigatedFrom ハンドラーを削除します
- Xaml のコンテンツを追加します - 例<TextBlock Grid.Row="1" Text="{Binding Hello}"/>

ファイルから と のオーバーライドを削除するOnNavigatedToと、は に正しくバインドされます。OnNavigatedFromFirstView.xaml.csFirstViewModelFirstView

したがって、私が知る限り、Windows 8.1 での Windows ストア アプリの手順は次のようになります。

  • すべてのビュー .xamlファイルで<Page><views:MvxStorePage>.
  • すべてのビュー .xaml.csファイルで、OnNavigatedToおよびOnNavigatedFromオーバーライドを削除します。

EDIT さらに、ビュー モデルの混同を避けるために、DefaultViewModelプロパティと関連するdefaultViewModelフィールドを.xaml.csファイルから削除し、 .xamlファイルのタグDataContextから属性を削除することもお勧めします。いずれにせよ、関連するものはMvvmCrossによって設定されます。<views:MvxStorePage>DataContext

于 2013-11-12T09:54:55.620 に答える