2013-02-07 11 views
5

ja wdrożyły podstawowe dane wiążące w kodzie tyłu, jest to kod:C# nie wiąże pracy

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

I to jest kod w przetwornicy,

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

Nawet nie wiem otrzyma komunikat o błędzie kompilatora, ale kod wiążący nie działa. Czemu?

+0

Sprawdź w oknie wyjściowym, czy są tam zgłaszane jakiekolwiek błędy. –

+0

Sprawdź okna wyjściowe, ponieważ nie wiemy, jaki masz problem. – user2240210

Odpowiedz

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

To jest złe. Source to obiekt zawierający właściwość, do której się zobowiązujesz. Co chcesz jest

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

Dzięki za szybką odpowiedź, działa teraz płynnie. Codziennie ucz się nowych rzeczy. – Herks

0

Jeśli źródło jesteś wiązania się to UIElement, spróbuj tego:

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

Musisz użyć właściwości Path zamiast Source wiązania danych.