2017-01-31 31 views
0

我有一個非常快速的問題。我使用切換按鈕來切換2個選項(它可以更多,但爲了簡單起見,我們只是說兩個按鈕),一旦按鈕被選中,我不希望它被取消選中,除非它選擇其他選項(即。必須始終選擇一個選項)。UWP:如何防止一旦檢查ToggleButton取消選中

在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

我會嘗試用設置* IsHitTestVisible *根據您的需要的東西(例如綁定財產,檢查所有按鈕和當前一個的選中狀態結合起來)。 – Romasz

+3

爲什麼不使用單選按鈕代替切換按鈕? – Blackstar

+1

IsEnabled呢?我認爲它應該解決一切。 –

回答

2

當我們點擊快速按鈕兩次時,Tap事件將被觸發一次。第二次點擊ToggleButton時,它只會將ToggleButton的狀態從已選中更改爲未選中狀態。

作爲一種解決方法,您應該可以將Click事件添加到ToggleButton。在Click事件中,我們應該能夠像Tap事件一樣設置IsChecked屬性。

當我們點擊ToggleButton一次,點擊事件將被觸發,然後點擊事件將被觸發。 如果我們點擊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; 
} 
+0

OH WOW !!!有效。你是冠軍!感謝分享! – Sam

相關問題