2011-04-24 61 views
1

我確實設置了一個計數器,並確實增加了多次,而只有一次點擊滑塊(根本沒有拖動)爲什麼?爲什麼多次觸發Silverlight滑塊的ValueChanged而僅點擊一次?

namespace testslider 
{ 
    public partial class MainPage : UserControl 
    { 
     private int counter = 0; 

     public MainPage() 
     { 
      InitializeComponent(); 
     } 

     private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
     { 
      counter = counter + 1; 
     } 
    } 
} 

回答

1

首先,我認爲這不是一個編程問題,如果它是我沒有理解它。

不管怎樣,想想滑塊行爲:該值可以通過點擊滑線多次改變或只是拖動滑塊按鈕向左/右。

因此,如果用戶,或者你在這種情況下,單擊該按鈕,然後將其拖動到所需的位置,你將有隻有一個點擊,但所造成的拖動多個的ValueChanged事件。

+0

我沒把課程 – user310291 2011-04-24 11:13:41

0

我想重複實驗,得到了不同的結果。有了這個標記:

<Grid> 
    <StackPanel> 
     <Slider Minimum="1" Maximum="10" Value="5" ValueChanged="Slider_ValueChanged"/> 
    </StackPanel> 
</Grid> 

這個隱藏代碼:

private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
    { 
     Debug.WriteLine("ValueChanged: {0} => {1}", e.OldValue, e.NewValue); 
    } 

我這調試輸出:

ValueChanged: 0 => 1 
ValueChanged: 1 => 5 

不點擊在所有和點擊不拖拉不產生任何額外ValueChanged事件。所以我確實看到兩個ValueChanged事件,但它們在啓動過程中發生,而不是在點擊過程中發生。第一個事件是強制值位於有效範圍內,第二個事件是XAML中指定的本地值。

0

這可能是因爲一個滑塊模板由拇指和左,右側RepeatButton.

表示,從它按下時 一再提高其 Click事件控制直到它被釋放。

如果你不想要這個功能,你應該修改模板並將它們從RepeatButtons改爲普通按鈕。讓我知道你是否需要樣品。

如果你沒有Expression Blend中,這個頁面可以幫助你瞭解什麼成分組成Sliderhttp://msdn.microsoft.com/en-us/library/ms753256.aspx(注:這是WPF,但Silverlight的版本是相似的)

相關問題