绑定属性不是依赖属性

the*_*man 5 c# wpf

我想将媒体元素的位置绑定到它的模型视图。我知道该属性不是依赖属性。所以尝试了这种方式,我在网上找到的代码

<MediaElement Source="{Binding CurrentClip.Path, Converter={StaticResource converter}, UpdateSourceTrigger=PropertyChanged}" Stretch="Uniform" local:MediaElementHelper.Postion="{Binding CurrentClip.Postion}"
Run Code Online (Sandbox Code Playgroud)

媒体元素助手

class MediaElementHelper
{
    public static readonly DependencyProperty PostionProperty =
        DependencyProperty.RegisterAttached("Position",
        typeof(bool), typeof(MediaElement),
        new FrameworkPropertyMetadata(false, PostionPropertyChanged));

    private static void PostionPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
    {
        var richEditControl = obj as MediaElement;

        if (richEditControl != null)
        {
            richEditControl.Position = (TimeSpan)e.NewValue;
        }
    }
    public static void SetPostion(UIElement element, TimeSpan value)
    {
        element.SetValue(PostionProperty, value);
    }
    public static TimeSpan GetPostion(UIElement element)
    {
        return (TimeSpan)element.GetValue(PostionProperty);
    }
}
Run Code Online (Sandbox Code Playgroud)

[错误] 无法在“MediaElement”类型的“SetPostion”属性上设置“Binding”。“绑定”只能在 DependencyObject 的 DependencyProperty 上设置。

我究竟做错了什么?

Nit*_*tin 5

您面临的问题是由于您的AttachedProperty.

相反,GetPostion它们SetPostion应该是GetPositionandSetPosition和 off,当然在使用 AttachedProperty 时应该是local:MediaElementHelper.Position(而不是 Postion)。

此外,您还需要按照其他答案的建议更新您的Type和。default value但是没有必要从中派生您的类DependancyObject,而是您可以创建您的类static