2016-12-09 4 views
2

Ich benutze die neueste Template 10 VS Erweiterung, um eine UWP Windows 10 Mobile App zu erstellen. Ich habe die Vorlage aktualisiert, um IOC (Autofac) zu verwenden, damit die ViewModels in der app.xaml.cs überschriebenen INavigable ResolveForPage(Page page, NavigationService) Methode aufgelöst werden. Ich habe auch die Seite Klassen jeweils aktualisiert haben eine Ansichtsmodell Eigenschaft wie:Xaml Binding kann ViewModel in Template 10 App nicht sehen

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; 
    } 
} 

Das hat bis jetzt gut gewesen, da ich nur x:Bind in Ansichten verwendet haben und die Bindung an die Ansichtsmodell funktioniert. Da ich die Vorlage 10 Validierungspaket installiert ich einige Ansichten aktualisiert haben wie

<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> 

Dieses Problem die ältere Binding Methode zu verwenden, die ich habe ist, dass der Text verbindlich, nicht Text="{Binding ViewModel.LoginModel.Password, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" nicht Cannot resolve symbol ViewModel due to unknown DataContext mit dem Fehler arbeiten.

Da ich neu bei UWP bin denke ich, dass ich einige erforderliche Konfiguration fehlt, um sicherzustellen, dass der DataContext auf das richtige ViewModel eingestellt ist. Ich habe versucht, DataContext = this im app.xaml.cs Konstruktor hinzuzufügen, aber das hat nicht funktioniert.

Kann mir jemand sagen, welchen Teil des Puzzles ich vermisse?

Antwort

3

Überprüfen Sie hier den Unterschied zwischen dem neuen x: Bind und dem alten Binding difference-between-binding-and-xbind. Laut der Fehlermeldung sucht die alte Bindung nach einer Eigenschaft namens "ViewModel" im DataContext der Seite. Aber der DataContext ist vom Typ "LoginPageViewModel" mit der Eigenschaft "LoginModel"? Also, wenn ich Recht habe, müssen Sie den Text etwas Bindung ändern wie

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

ich denke, das ist ein guter Anfang sein, sollten Sie in der richtigen Richtung zu führen;)

auch hilfreich zu lernen und verstehe den Unterschied zwischen der alten und der neuen Bindung: data-binding-in-depth

+0

Das war genau der Hinweis, den ich brauchte, um es zum Laufen zu bringen. Die Bindung so einstellen, wie Sie es vorgeschlagen haben. Ich werde es auch genauer lesen. Jetzt erfahren Sie, warum die Validierungsfehler während der Code-Eingabe nicht in der Ansicht angezeigt werden. Danke für die Hilfe. – Steve

+1

@Steve Froh, dass es geholfen hat. Ein Problem/Problem ist normalerweise ein guter Anfang, um zu lesen, zu lernen und mehr ins Detail zu gehen, um zu verstehen, was passiert ist und warum ich nicht gearbeitet habe. – 1ppCH

Verwandte Themen