2016-12-09 8 views
2

最新のTemplate 10 VS拡張機能を使用して、UWP Windows 10モバイルアプリケーションを作成しています。 app.xaml.csオーバーライドされたINavigable ResolveForPage(Page page, NavigationService)メソッドでViewModelが解決されるように、IOC(Autofac)を使用するようにテンプレートを更新しました。私は唯一のビューでx:Bindを使用してのviewmodelの作品への結合をしましたので、これは今まで罰金となっているXamlバインディングでテンプレート10のアプリケーションのViewModelが表示されない

public sealed partial class LoginPage : Page 
{ 
    private LoginPageViewModel _viewModel; 

    public LoginPageViewModel ViewModel => _viewModel ?? (_viewModel = (LoginPageViewModel)DataContext); 

    public LoginPage() 
    { 
     InitializeComponent(); 
     NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled; 
    } 
} 

:などのViewModelプロパティを持っている は、私はまた、各ページクラスを更新しました。私は、このような

<validate:ControlWrapper PropertyName="Password"> 
      <TextBox x:Name="Password" 
       HorizontalAlignment="Left" 
       Margin="10,220,0,0" 
       TextWrapping="Wrap" 
       Text="{Binding ViewModel.LoginModel.Password, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
       VerticalAlignment="Top" 
       Width="{StaticResource FieldWidth}" 
       Height="60" 
       PlaceholderText="Password" 
       FontSize="24" 
       InputScope="Password"> 
       <Interactivity:Interaction.Behaviors> 
        <Core:EventTriggerBehavior> 
         <Behaviors:FocusAction /> 
        </Core:EventTriggerBehavior> 
       </Interactivity:Interaction.Behaviors> 
      </TextBox> 
     </validate:ControlWrapper> 

として古いBinding方法を使用するために、いくつかのビューを更新したテンプレート10検証パッケージをインストールしているので、私が持っているこの問題は、テキストが結合点である、Text="{Binding ViewModel.LoginModel.Password, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"はエラーCannot resolve symbol ViewModel due to unknown DataContextでは動作しません。

私はUWPを初めて使い慣れているので、DataContextが正しいViewModelに設定されていることを確認するために、いくつかの必要な設定が欠落していると思います。 app.xaml.csコンストラクタにDataContext = thisを追加しようとしましたが、これは機能しませんでした。

パズルのどの部分が不足していると誰に教えてもらえますか?

答えて

3

新しいx:Bindと古いバインドdifference-between-binding-and-xbindの違いについては、ここを確認してください。エラーメッセージによると、古いバインディングは、ページのDataContextで "ViewModel"というプロパティを探しています。しかし、DataContextは "LoginModel"というプロパティを持つ "LoginPageViewModel"型ですか?私が正しいのであれば、私は、これは正しい方向にあなたを導くために良いスタートすべきだと思います

Text="{Binding LoginModel.Password, Mode=... 

のようなものに結合するテキストを変更する必要があります。)学ぶことが

も有用で、古いバインディングと新しいバインディングの違いを理解できない:data-binding-in-depth

+0

これは私がそれを動作させるのに必要なヒントでした。あなたが提案したようにバインディングを設定する。もう少し徹底的に読んでいくつもりです。今度は、コードに設定されている検証エラーがなぜビューに表示されないのかを調べる。助けてくれてありがとう。 – Steve

+1

@ Steve Gladそれが助けました。問題や問題は、通常、何が起こったのか、なぜ私がうまくいかなかったのかを理解するために、詳細を読み、学習し、詳細に行く良いスタートです。 – 1ppCH

関連する問題