在 WPF 中我想创建自定义Inline http://msdn.microsoft.com/en-us/library/system.windows.documents.inline.aspx执行。从文档Inline http://msdn.microsoft.com/en-us/library/system.windows.documents.inline.aspx:“一个抽象类,为所有内联流内容元素提供基础。”类如Figure http://msdn.microsoft.com/en-us/library/system.windows.documents.figure.aspx, Run http://msdn.microsoft.com/en-us/library/system.windows.documents.run.aspx or Span http://msdn.microsoft.com/en-us/library/system.windows.documents.span.aspx继承自Inline http://msdn.microsoft.com/en-us/library/system.windows.documents.inline.aspx.
我的自定义类继承自Inline http://msdn.microsoft.com/en-us/library/system.windows.documents.inline.aspx类似于“2 行运行”。我对文档流程有特殊需求,这似乎是唯一的方法。但我不知道从哪里开始:Inline http://msdn.microsoft.com/en-us/library/system.windows.documents.inline.aspx没有定义任何成员!它是抽象类,因此它应该被继承,但是没有文档关于如何继承它。没有在 MSDN 上找到它,也没有在其他地方找到它。
如果您可以提供一些在线资源(教程/博客/文章)或代码示例如何创建子类Inline http://msdn.microsoft.com/en-us/library/system.windows.documents.inline.aspx。例如,只是一些宽度和高度的空盒子。
如果你想知道为什么我想创建自定义Inline
元素看看问题在 WPF 中创建吉他和弦编辑器 https://stackoverflow.com/questions/5796457/create-guitar-chords-editor-in-wpf-from-richtextbox.
基类仅可用于添加类型保真度的目的。例如,FlowDocument 处理器中的代码可能只想执行如下代码:
if(currentElement is Inline)
{
// Do something
}
Inline 实际上根本不需要做任何事情。
至于 Inline 的子类化,我认为你可能无法实现你想要的。我的理解是 FlowDocument 渲染器负责查看元素的类型并根据其类型和属性解释它们的行为方式。换句话说,它不知道您的自定义代码。我认为你能做的最好的事情就是从一个有用的元素进行子类化,并让你的子类与属性值或任何可重写的东西混在一起。
您也可以添加附加属性并处理定义这些属性的子元素。例如,如果您希望超链接容器允许不同的子元素提供不同的链接,则可以从 Hyperlink 进行子类化,定义新的 Link 附加属性,并以与 Hyperlink 本身不同的方式处理子元素的单击事件。
您还可以使用 InlineUIContainer 和 BlockUIContainer 元素取得一些成功,这些元素允许您在其中嵌入任何 UIElement,包括自定义 UIElement。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)