UWP:如何防止选中 ToggleButton 后未选中
UWP: how to prevent ToggleButton unchecked once it is checked
我有一个非常快速的问题。我正在使用切换按钮在 2 个选项之间切换(它可以更多但为了简单起见,我们只说两个按钮)并且一旦选中按钮,我不希望它被取消选中,除非它 select 另一个选项(即一个选项必须一直 selected)。
在 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;
}
现在,如果我(快速)点击 Cash 按钮 两到三下,Cash 按钮 将取消选中。 e.Handled = true;
似乎没有效果。你能帮帮我吗?
谢谢!
当我们快速点击现金按钮两次时,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;
}
我有一个非常快速的问题。我正在使用切换按钮在 2 个选项之间切换(它可以更多但为了简单起见,我们只说两个按钮)并且一旦选中按钮,我不希望它被取消选中,除非它 select 另一个选项(即一个选项必须一直 selected)。
在 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;
}
现在,如果我(快速)点击 Cash 按钮 两到三下,Cash 按钮 将取消选中。 e.Handled = true;
似乎没有效果。你能帮帮我吗?
谢谢!
当我们快速点击现金按钮两次时,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;
}