5

我在后面的代码中实现了一个基本的数据绑定,代码如下:

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);
    }
}

即使我没有收到编译器的错误消息,但绑定代码不起作用。为什么?

4

4 回答 4

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

这是错误的。Source是包含您要绑定的属性的对象。你想要的是

bindingSlider.Source = mediaElement ;
bindingSlider.Path   = new PropertyPath ("Position") ;
于 2013-02-07T12:17:53.963 回答
2

您需要使用Path属性而不是Source数据绑定。

于 2013-03-01T06:08:00.440 回答
0

从您的代码中找出错误是非常困难的。正如 Fabian 所说 - 检查输出窗口。但之前增加绑定跟踪级别。检查下一步以了解如何操作。

PresentationTraceSources.TraceLevel

于 2013-02-07T12:09:48.510 回答
0

如果你绑定的 Source 是 a 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);
于 2013-02-07T12:29:22.573 回答