C#绑定无法正常工作

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

即使我没有收到编译器的错误信息,但绑定代码仍然无法工作。为什么?

请查看输出窗口,看看是否有报告任何错误。 - Fabian Tamp
请检查输出窗口,因为我们不知道您的问题在哪里。 - user2240210
4个回答

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

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

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

1
感谢您的快速回复,现在一切都运行顺畅。每天在这里学习新东西。 - Herks

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

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

0

从你的代码中找出问题是相当困难的。正如Fabian所说 - 检查输出窗口。但是在此之前增加绑定跟踪级别。查看下面的内容以了解如何操作。

PresentationTraceSources.TraceLevel


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接