因为UWP中没有Hold和Tap事件,所以我在UWP中使用Tapped And Holding事件。
对于Windows phone 8应用我使用点按手持事件按钮。当我按住按钮时,点击事件不会发生火灾。
但是在UWP中我尝试了Click and Tapped事件,但是当我按住按钮时都会触发。
请建议我按住按钮时其他事件不应该触发的其他方法 在这里举行活动是必要的,建议我替换Tapped和click事件,因为当我按住并释放按钮时这些事件会触发
XAML
<StackPanel Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center">
<Button Name="BackwardButton"
FontFamily="Segoe MDL2 Assets" Content=""
FontSize="30" Background="Transparent"
Tapped="BackwardButton_Tapped" Holding="BackwardButton_Holding"
PointerExited="BackwardButton_PointerExited"/></StackPanel>
<TextBlock Name="txtBox1" FontSize="18"
HorizontalAlignment="Center" VerticalAlignment="Bottom"/>
C#
private static int i;
private void BackwardButton_Tapped(object sender, TappedRoutedEventArgs e)
{
i++;
txtBox1.Text = i.ToString();
}
private int a = 10;
private void BackwardButton_Holding(object sender, HoldingRoutedEventArgs e)
{
BackwardButton.Content = "\xE100";
try
{
a++;
txtBox1.Text = a.ToString();
}
catch (Exception)
{
//Exception(ex);
}
}
private void BackwardButton_PointerExited(object sender, PointerRoutedEventArgs e)
{
BackwardButton.Content = "\xE26C";
}
解决方案在Windows 8上尝试但在UWP中保持并点击事件不可用 Click Event should not trigger when hold event perform
答案 0 :(得分:1)
注意Holding
事件将触发两次。第一次是HoldingState.Started
状态,第二次是HoldingState.Completed
。您所要做的就是将您的逻辑包装在以下if
语句
private void BackwardButton_Holding(object sender, HoldingRoutedEventArgs e)
{
if (e.HoldingState == Windows.UI.Input.HoldingState.Started)
{
...
}
我建议你开始使用断点来解决这个问题。通过在
处设置断点来确定从未在调用期间调用Tapped
事件应该是相当直截了当的。
txtBox1.Text = i.ToString();
希望这有帮助。