2012-06-17 47 views
1

我在windows phone項目中遇到了綁定問題。我將一個類綁定到一個滑塊,但它不會更新該值。如果我第一次啓動應用程序,則綁定連接已正確建立並且滑塊具有正確的值。但是,如果我更改「位置」或「持續時間」值,則滑塊不會隨之更新。將數據綁定到滑塊不起作用

你能幫我嗎?我沒有任何線索,我做錯了什麼:(

Class.cs:

public class Status : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 
    private void PropChanged(string propName) 
    { 
    if (PropertyChanged != null) 
    { 
     PropertyChanged(this, new PropertyChangedEventArgs(propName)); 
    } 
    } 

    public double duration 
    { 
    get { return _duration; } 
    set 
    { 
     if (this._duration == value) 
     return; 

     _duration = value; 
     PropChanged("duration"); 
    } 
    } 

    public double position 
    { 
    get { return _position; } 
    set 
    { 
     if (this._position == value) 
     return; 

     _position = value; 
     PropChanged("position"); 
    } 
    } 
} 

MainPage.xaml.cs中:

public partial class MainPage : PhoneApplicationPage 
{ 
    public MainPage() 
    { 
    this.ContentPanel.DataContext = _Status; 
    } 
} 

MainPage.xaml中:

... 
<Grid x:Name="ContentPanel" Margin="12,12,12,0" Grid.RowSpan="2"> 
    <Slider x:Name="sl_PlayBackProgress" 
      Value="{Binding Path=position}" 
      Maximum="{Binding Path=duration}" 
      Height="91" 
      HorizontalAlignment="Left" 
      Margin="0,40,0,0" 
      VerticalAlignment="Top" 
      Width="408"/> 
</Grid> 
... 

回答

1

不知道它是否與正常的XAML/WPF不同,但在正常情況下,我會建議首先將Binding.Mode設置爲TwoWay和next剛剛在position.set入口處突破 - 並看到通過的value

+0

將Binding.Mode設置爲'TwoWay'未做任何更改。 '位置'變量也被正確更新。 我認爲這是綁定本身的問題。如果我手動將'最大'屬性設置爲一個靜態值,滑塊更新正確。是否有可能,這對兩個屬性都沒有約束力? – S0me0ne

+0

編輯:對不起,我必須糾正自己。我已經重讀了TwoWay並將其設置爲「OneWay」......我的錯,對不起! 但是,你可以向我解釋一下,爲什麼我必須把它設置爲'TwoWay'?據我瞭解,我做了一個'單向'綁定。 – S0me0ne