2013-02-07 14 views
5

ho implementato un insieme di dati di base vincolante in codice dietro, questo è il codice:C# legame non funziona

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

E questo è il codice del convertitore,

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

Anche se io non lo faccio ricevere il messaggio di errore del compilatore, ma il codice di binding non funziona. Perché?

+0

Dai un'occhiata alla finestra di output e controlla se sono stati segnalati errori. –

+0

Controlla le finestre di output perché non sappiamo qual è il tuo problema. – user2240210

risposta

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

questo è sbagliato. Source è l'oggetto che contiene la proprietà a cui si sta vincolando. Quello che vuoi è

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

Grazie per la rapida risposta, ora funziona senza intoppi. Impara cose nuove qui ogni giorno. – Herks

0

È piuttosto difficile ottenere dal codice ciò che è sbagliato. Come ha detto Fabian, controlla le finestre di output. Ma aumenta prima il livello di traccia di legame. Controlla per sapere come farlo.

PresentationTraceSources.TraceLevel

0

Se la sorgente si sono vincolanti per un UIElement, provate questo:

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

è necessario utilizzare la proprietà Path invece di Source in associazione dati.