所以我上了课;我们以ScrollViewer类为例.它有一个名为Content的依赖属性,它接受System.Object类型的任何东西,太棒了!
假设我从ScrollViewer派生一个类,让我们称之为ZoomScrollViewer,它使用键盘按下鼠标添加一些基本的缩放和平移.它还添加了自己的依赖属性AutoscaleContent.
现在,我希望能够将ZoomScrollViewer放入UI窗口,但我只希望它接受Canvas作为内容.当然,我要创建一个ZoomScrollViewer< T>类.
但是,如何更改Content属性以便只接受< T>类型的元素?我可以覆盖依赖属性吗?我有点困惑并尝试过:
public new T Content { get { return (T)base.Content; } set { base.Content = value; } }
但是当然这使它不再是依赖属性,所以当我设置绑定时,所有的XAML代码都会失败.
编辑:还应该注意我已经看过使用:
ZoomScrollViewer.contentproperty.OverrideMetadata(typeof(ZoomScrollControl2<T>),new PropertyMetadata(...?));
要看看我是否可以使用它做任何事情,但似乎你只能覆盖默认值,除非我遗漏了什么?
更新:我现在尝试使用以下内容:
public class ZoomScrollControl2<T> : ZoomScrollViewer where T : FrameworkElement { static ZoomScrollControl2() { contentproperty.OverrideMetadata(typeof(ZoomScrollControl2<T>),new FrameworkPropertyMetadata(typeof(ZoomScrollControl2<T>))); } } public class CanvasZoomControl : ZoomScrollControl2<Canvas> { }
我认为它会起作用,但它似乎仍然接受任何类型的内容.
更新:简而言之,我不确定我想做的事情是否可行,所以我将讨论标记为答案,即使这不是答案本身.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。