2016-03-25 18 views
0

ビューに含まれるusercontrolでコマンドをバインドするときに問題があります。ListView MVVM内のTextBox上のUWP InvokeCommandAction

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

、私はTextChangedイベントで、QSoldChangedを呼びたいが、何がしたいです起こる私は何が欠けていますか?この場合、コマンドを設定するのは正しい方法ですか? もっと必要な場合はお問い合わせください! ありがとうございます

+0

問題はxと共にある作品を願っています。それはモードです。したがって、テキストの変更はビューモデルには反映されません。バインディングに変更します。それがうまくいきますように – Archana

答えて

0

問題はx:テキストボックスのバインドです。それはモードです。したがって、テキストの変更はビューモデルには反映されません。バインディングに変更します。 また、これは問題を引き起こしている可能性があります。

{x:Bind}は、DataContextをデフォルトのソースとして使用せず、代わりにページまたはユーザーコントロール自体を使用します。つまり、ページやユーザーコントロールのコードビハインドでプロパティ、フィールド、メソッドを探します。ビューモデルを{x:Bind}に公開するには、通常、ページやユーザーコントロールのコードビハインドに新しいフィールドやプロパティを追加します。テキストボックスのバインド: このリンクを参照してくださいx:Bind

は、それが

+0

あなたは正しいです!ご協力いただきありがとうございます – thepasto

関連する問題