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