2013-02-07 38 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数据绑定。