2013-02-07 39 views
5

我實現了一個基本的數據在後面的代碼綁定,這是代碼:C#綁定不工作

Binding bindingSlider = new Binding(); 
bindingSlider.Source = mediaElement.Position; 
bindingSlider.Mode = BindingMode.TwoWay;    
bindingSlider.Converter = (IValueConverter)Application.Current.Resources["DoubleTimeSpan"];    
slider.SetBinding(Slider.ValueProperty, bindingSlider); 

這是轉換器的代碼,

class DoubleTimeSpan : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, 
string language) 
    { 
     return ((TimeSpan)value).TotalSeconds; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, 
string language) 
    {   
     return TimeSpan.FromSeconds((double)value); 
    } 
} 

即使我不收到編譯器的錯誤消息,但綁定代碼不起作用。爲什麼?

+0

查看輸出窗口,看看是否有錯誤報告。 –

+0

檢查輸出窗口,因爲我們不知道你的問題是什麼。 – user2240210

回答

2
bindingSlider.Source = mediaElement.Position ; // boo! 

這是不對的。 Source是包含您綁定到的屬性的對象。你想要的是

bindingSlider.Source = mediaElement ; 
bindingSlider.Path = new PropertyPath ("Position") ; 
+1

感謝您的快速回復,現在工作順利。每天在這裏學習新東西。 – Herks

0

從代碼中獲取什麼是錯誤的是非常困難的。正如費邊所說 - 檢查輸出窗口。但之前增加綁定跟蹤級別。請檢查旁邊的知道如何做到這一點。

PresentationTraceSources.TraceLevel

0

如果綁定的源是UIElement,試試這個:

Binding bindingSlider = new Binding("Position"); 
bindingSlider.ElementName = "mediaElement"; 
bindingSlider.Mode = BindingMode.TwoWay;    
bindingSlider.Converter = (IValueConverter)Application.Current.Resources["DoubleTimeSpan"];    
slider.SetBinding(Slider.ValueProperty, bindingSlider); 
2

您需要使用Path屬性,而不是Source數據綁定。