我有一个非常快速的问题。我使用切换按钮在2个选项之间切换(它可以更多但是为了简单起见,我们只说两个按钮)并且一旦选中按钮,我不希望它被取消选中,除非它选择其他选项(即。必须始终选择一个选项。
在WPF中,我曾经处理 PreviewMouseLeftButtonDown 以防止切换按钮取消选中。但它似乎在UWP中没有。
到目前为止,这是我的代码:
//in XAML
<ToggleButton x:Name="tbtnCash" Grid.Column="0" Content="CASH" IsChecked="True" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" Padding="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Tapped="tbtnCash_Tapped"></ToggleButton>
<ToggleButton x:Name="tbtnCard" Grid.Column="1" Content="CARD" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" Padding="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Tapped="tbtnCard_Tapped"></ToggleButton>
//In code
private void tbtnCash_Tapped(object sender, TappedRoutedEventArgs e)
{
e.Handled = true;
tbtnCash.IsChecked = true;
tbtnCard.IsChecked = false;
}
private void tbtnCard_Tapped(object sender, TappedRoutedEventArgs e)
{
e.Handled = true;
tbtnCash.IsChecked = false;
tbtnCard.IsChecked = true;
}
现在,如果我点击现金按钮两到三次(快速),现金按钮将取消选中。似乎e.Handled = true;
没有效果。你能救我吗?
谢谢!
答案 0 :(得分:2)
当我们快速点击两次Cash按钮时,Tap事件将被触发一次。第二次点按ToggleButton
,它只会将ToggleButton
的状态从已选中更改为未选中状态。
作为解决方法,您应该能够将Click事件添加到ToggleButton
。在Click事件中,我们应该能够像Tap事件中那样设置IsChecked属性。
当我们点击ToggleButton
一次时,将触发Click事件,然后触发Tap事件。
如果我们点击ToggleButton
两次,Click事件将被触发两次。
例如:
private void tbtnCash_Tapped(object sender, TappedRoutedEventArgs e)
{
Debug.WriteLine("Tap is fired!");
e.Handled = true;
tbtnCash.IsChecked = true;
tbtnCard.IsChecked = false;
}
private void tbtnCard_Tapped(object sender, TappedRoutedEventArgs e)
{
e.Handled = true;
tbtnCash.IsChecked = false;
tbtnCard.IsChecked = true;
}
private void tbtnCash_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Click is fired!");
tbtnCash.IsChecked = true;
tbtnCard.IsChecked = false;
}
private void tbtnCard_Click(object sender, RoutedEventArgs e)
{
tbtnCash.IsChecked = false;
tbtnCard.IsChecked = true;
}