2016-03-25 16 views
0

Ich habe ein Problem, einen Befehl in einem Benutzersteuerelement in einer Ansicht enthalten zu binden.UWP InvokeCommandAction auf TextBox in ListView MVVM

UserControl.xaml

<DataTemplate x:Key="SoldItemDataTemplate" x:DataType="data:SoldItem"> 
    <Grid HorizontalAlignment="Stretch"> 
     <Grid.ColumnDefinitions> 
     ... 
     </Grid.ColumnDefinitions> 
     ... 
      <TextBox Grid.Column="2" Text="{x:Bind q}"> 
       <Interactivity:Interaction.Behaviors> 
        <Core:EventTriggerBehavior EventName="TextChanged"> 
         <Core:InvokeCommandAction Command="{Binding Path=DataContext.QChanged, ElementName=SoldRows}" CommandParameter="{Binding Mode=TwoWay}"/> 
        </Core:EventTriggerBehavior> 
       </Interactivity:Interaction.Behaviors> 
      </TextBox> 
     </Grid> 
</DataTemplate> 
... 
<ListView x:Name="SoldRows" 
    ItemsSource="{Binding SoldItemsList , Mode=TwoWay}" 
    IsItemClickEnabled="True" 
    ItemTemplate="{StaticResource SoldItemDataTemplate}"> 
... 

MainPage.xaml

<Page.DataContext> 
    <vm:MainPageViewModel x:Name="ViewModel"></vm:MainPageViewModel> 
</Page.DataContext> 
... 
<controls:UserControl Grid.Row="1"></controls:UserControl> 
... 

MainPageViewModel.cs

... 
private DelegateCommand<object> _QSoldChanged; 
... 
public DelegateCommand<object> QSoldChanged 
    { 
     get 
     { 
      if (_QSoldChanged == null) 
      { 
       _QSoldChanged = new DelegateCommand<object>((object par) => 
       { 
        ... 
       }); 
      } 

      return _QSoldChanged; 
     } 
    } 

So möchte Ich mag QSoldChanged nennen, auf Textchanged-Ereignis, aber nichts das passiert. Was vermisse ich? Ist das der richtige Weg, um in diesem Fall den Befehl zu setzen? Wenn Sie mehr brauchen, fragen Sie einfach! Vielen Dank im Voraus

+0

Problem x: Binden von Textbox. Es ist ein Modus. Textänderungen spiegeln also nicht das Ansichtsmodell wider. Ändern Sie es in Bindung. hoffe es funktioniert – Archana

Antwort

0

Problem ist mit x: Bind von Textfeld. Es ist ein Modus. Textänderungen spiegeln also nicht das Ansichtsmodell wider. Ändern Sie es in Bindung. Und das könnte auch Problem verursachen

{x: Bind} verwendet den DataContext nicht als Standardquelle - stattdessen verwendet es die Seite oder das Benutzersteuerelement selbst. Daher wird im Code-Behind Ihrer Seite oder Ihres Benutzersteuerelements nach Eigenschaften, Feldern und Methoden gesucht. Um Ihr Ansichtsmodell {x: Bind} verfügbar zu machen, möchten Sie dem Code, der für Ihre Seite oder Ihr Benutzersteuerelement verwendet wird, normalerweise neue Felder oder Eigenschaften hinzufügen. Siehe den Link x:Bind

hoffen, es funktioniert

+0

Du hast Recht! Danke für Ihre Hilfe – thepasto