2017-09-08 48 views
2

这是我试过到目前为止:如何将网格手势链接到视图模型命令?

<Grid x:Name="wordGrid" Padding="10,0,10,0"> 
    <Grid.GestureRecognizers> 
     <TapGestureRecognizer Command="{Binding wordGridClickedCommand}" /> 
    </Grid.GestureRecognizers> 

在视图模型:

public class PhrasesFrameViewModel : ObservableProperty 
{ 

    public PhrasesFrameViewModel() 
    { 
     var wordGridClickedCommand = new Command(() => 
     { 
      if (App.Timer1Running) 
       ResetTimer1(); 
      else 
       ResetTimer2(); 
     }); 
    } 

当我把一个断点,当我对电网挖掘没有得到达到该命令。

如果我可能做错了,我将不胜感激。

感谢

回答

2

Binding只适用于properties

您可以在视图模型公开属性为:

private ICommand wordGridClickedCommand; 
pubilc ICommand WordGridClickedCommand 
{ 
    get { return wordGridClickedCommand; } 
    set 
    { 
     wordGridClickedCommand = value; 
     OnPropertyChanged(); 
    } 
} 

,并确保在XAML更新到WordGridClickedCommand绑定路径。

EDIT-1

或者你可以使用:

private ICommand wordGridClickedCommand; 
pubilc ICommand WordGridClickedCommand 
{ 
    get 
    { 
     return wordGridClickedCommand ?? 
      (wordGridClickedCommand = new Command(() => 
      { 
       if (App.Timer1Running) 
        ResetTimer1(); 
       else 
        ResetTimer2(); 
      })); 
    } 
} 
+0

难道我也只是把wordGridClickedCommand代码返回之后或内部得到什么?另外,如果不是那么wordGridClickedCommand代码应该在构造函数内吗? – Alan2

+1

您仍然可以将处理程序代码保存在构造函数中,或将其移至getter。但是如果你把它移动到 - 在设置命令之前记住做一个空检查 - 沿着'wordGridClickedCommand = wordGridClickedCommand?新命令(..'; – Ada

+0

)如果你有几分钟的时间,你可以举一个例子来说明它是如何被编码的,谢谢 – Alan2

相关问题