2013-02-07 56 views
5

tôi đã thực hiện một dữ liệu cơ bản ràng buộc trong mã đằng sau, đây là đoạn code:C# ràng buộc không làm việ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); 

Và đây là mã của chuyển đổi,

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

Mặc dù tôi không nhận được thông báo lỗi của trình biên dịch, nhưng mã ràng buộc không hoạt động. Tại sao?

+0

Hãy xem trong cửa sổ đầu ra và xem có bất kỳ lỗi nào được báo cáo ở đó không. –

+0

Kiểm tra cửa sổ đầu ra vì chúng tôi không biết vấn đề của bạn là gì. – user2240210

Trả lời

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

này là sai. Source là đối tượng chứa thuộc tính bạn đang ràng buộc. Những gì bạn muốn là

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

Cảm ơn bạn đã trả lời nhanh, nó hiện đang hoạt động trơn tru. Học những điều mới tại đây mỗi ngày. – Herks

0

Rất khó để lấy mã của bạn điều gì sai. Như Fabian đã nói - hãy kiểm tra các cửa sổ đầu ra. Nhưng tăng mức độ dấu vết ràng buộc trước đây. Kiểm tra bên cạnh để biết làm thế nào để làm điều đó.

PresentationTraceSources.TraceLevel

0

Nếu Nguồn bạn đang ràng buộc để là một UIElement, hãy thử này:

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

Bạn cần phải sử dụng Path tài sản thay vì Source trong dữ liệu ràng buộc.

Các vấn đề liên quan