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

コードから何が悪いのかを知るのは非常に困難です。ファビアンが言ったように-出力ウィンドウを確認してください。ただし、前にバインディングトレースレベルを上げてください。次に確認して、その方法を確認してください。

PresentationTraceSources.TraceLevel

于 2013-02-07T12:09:48.510 に答える
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);
于 2013-02-07T12:29:22.573 に答える