2014-06-30 54 views
0

在我的WPF項目,我有Value="{Binding Path=. . .}" ValueChanged=" . . ."ValueChanged事件是由於綁定而發生的?

滑塊控件在這個ValueChanged的事件處理方法,我想了解當前事件是否是由移動滑塊用戶或作爲Value="{Binding Path=. . .}"結果發生。

我怎麼理解這個?

更新:我們的目標:

我有一組複選框,並通過檢查其中的任何東西被添加到。用戶也可以用Slider將號碼更改。滑塊和複選框應該反映彼此的變化。

ValueChanged的事件處理方法是負責在複選框組檢查,並且Value="{Binding Path=. . .}"負責以反映的變化,這initialy來自複選框。

謝謝。

+0

你能描述一個目標嗎?這似乎是一個糟糕的設計,不是嗎? –

+0

[忽略由於數據綁定導致的文本/值更改]的可能重複(http://stackoverflow.com/questions/7841292/ignoring-text-value-changes-due-to-databinding) –

回答

0

我不知道我理解你的問題。如果您想知道值是由用戶還是綁定更改的:

RoutedPropertyChangedEventArgs.Source將始終是滑塊。所以你必須自己做。

比方說,你是在值綁定(只需添加一個布爾值):

private bool valueChangedByUser = false; 
    private double value = 5; 
    public double Value 
    { 
     get 
     { 
      return value; 
     } 
     set 
     { 
      valueChangedByUser = true; 
      this.value = value; 
      OnPropertyChanged("Value"); 
     } 
    } 

當你在你的代碼更改值,只是把valueChangedByUser爲false。

private void ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e) 
    { 
     if (valueChangedByUser) 
     { 
      /* Value was changed by user */ 
     } 
     else 
     { 
      /* Value was not changed by user */ 
     } 
    } 
相關問題