C# WPF:如何创建基类&x27;依赖项属性只读_

C# WPF:如何创建基类&x27;依赖项属性只读_,c#,wpf,inheritance,dependency-properties,member-hiding,C#,Wpf,Inheritance,Dependency Properties,Member Hiding,我有一节课 公共类NavigableViewport3D:Viewport3D。该类应隐藏Viewport3D.Camera属性,使其成为只读。以下是我目前掌握的情况: public class NavigableViewport3D : Viewport3D { protected static readonly DependencyPropertyKey CameraPropertyKey = DependencyProperty.RegisterReadOnly(

我有一节课
公共类NavigableViewport3D:Viewport3D
。该类应隐藏
Viewport3D.Camera
属性,使其成为只读。以下是我目前掌握的情况:


public class NavigableViewport3D : Viewport3D
{
    protected static readonly DependencyPropertyKey CameraPropertyKey = DependencyProperty.RegisterReadOnly(
        "Camera",
        typeof(Camera),
        typeof(NavigableViewport3D),
        new PropertyMetadata()
        );
    public static readonly new DependencyProperty CameraProperty = CameraPropertyKey.DependencyProperty;

    public new Camera Camera
    {
        get
        {
            return base.Camera;
        }
        protected set
        {
            base.Camera = value;
        }
    }
}
但我也希望
navigabliewport3d.CameraProperty
始终返回与
Viewport3D.CameraProperty
/
base.Camera
相同的值。。。 如果没有依赖属性,我会这样做:

public class NavigableViewport3D : Viewport3D
{
    public new Camera Camera
    {
        get
        {
            return base.Camera;
        }
        protected set
        {
            base.Camera = value;
        }
    }
}
我真的希望有更好的方法来实现这一点。。。有什么建议吗?

这个怎么样:

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
    }

    public class NavigableViewport3D : Viewport3D
    {
        public static readonly new DependencyProperty CameraProperty;

        static NavigableViewport3D()
        {
            NavigableViewport3D.CameraProperty = Viewport3D.CameraProperty.AddOwner( typeof( NavigableViewport3D ) );
        }
    }
}
命名空间WpfApplication1
{
/// 
///Window1.xaml的交互逻辑
/// 
公共部分类Window1:Window
{
公共窗口1()
{
初始化组件();
}
}
公共类NavigableViewport3D:Viewport3D
{
公共静态只读新从属属性CameraProperty;
静态NavigableViewport3D()
{
NavigableViewport3D.CameraProperty=Viewport3D.CameraProperty.AddOwner(类型为(NavigableViewport3D));
}
}
}

也许这篇msdn文章会有帮助:
namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
    }

    public class NavigableViewport3D : Viewport3D
    {
        public static readonly new DependencyProperty CameraProperty;

        static NavigableViewport3D()
        {
            NavigableViewport3D.CameraProperty = Viewport3D.CameraProperty.AddOwner( typeof( NavigableViewport3D ) );
        }
    }
}