我有一个按钮和一个网格。按钮绑定到ExecuteButtonCommand,而TapGestureRecognizer for Grid绑定到ExecuteGridCommand。现在,如果我快速按下按钮,相应的标签将显示所有平台的正确点击计数,即命令代码正在执行点击发生的次数。
但是在Grid的情况下,尽管对于android和iOS来说,它工作得很好。但是对于UWP,并不是所有的单击都在执行命令。例如:如果我快速点击网格6次,那么相应的标签仅显示3或4个计数,这意味着执行手势命令的次数比实际执行的次数要少。
这是我的ViewModel中拥有的
<StackLayout HorizontalOptions="Center" VerticalOptions="Center">
<!-- Place new controls here -->
<Label Text="{Binding ButtonExecutionCount}" HorizontalOptions="Center"/>
<Button x:Name="ClickButton" Text="ExecuteClick" HorizontalOptions="Center"
Command="{Binding ExecuteButtonCommand}"
/>
<Label Text="{Binding GridExecutionCount}" HorizontalOptions="Center"/>
<Grid BackgroundColor="Aquamarine" VerticalOptions="Center" HorizontalOptions="Center">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Text="Click this grid" Grid.Column="0" Grid.Row="0" HorizontalOptions="Center"/>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ExecuteGridCommand}"></TapGestureRecognizer>
</Grid.GestureRecognizers>
</Grid>
</StackLayout>
这是绑定视图模型的代码,该代码记录并显示点击计数:
public class MainPageViewModel : INotifyPropertyChanged
{
public MainPageViewModel()
{
ExecuteGridCommand = new Command(ExecuteGridMethod);
ExecuteButtonCommand = new Command(ExecuteButtonMethod);
}
private int _gridExecutionCount;
public int GridExecutionCount
{
get => _gridExecutionCount;
set
{
_gridExecutionCount = value;
OnPropertyChanged();
}
}
private int _buttonExecutionCount;
public int ButtonExecutionCount
{
get => _buttonExecutionCount;
set
{
_buttonExecutionCount = value;
OnPropertyChanged();
}
}
public Command ExecuteGridCommand { get; set; }
public Command ExecuteButtonCommand { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string name = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
public void ExecuteGridMethod()
{
GridExecutionCount++;
}
public void ExecuteButtonMethod()
{
ButtonExecutionCount++;
}
}
在这里,我两次都喜欢,并且按钮数量很好,但是对于UWP中的网格,实际点击次数要少。
通过命令单击标签/网格时,我也遇到相同的错误。我创建了一个网格作为自定义按钮,用于显示可单击的项目,在iOs和Android中一切正常,但是在UWP的情况下,如果我随机舔一下,并非所有单击都在进行/注册。与上述问题类似。@Lucas尝试随机单击。