如何创建 Inline 类的子类? (FlowDocument 中使用的)

2024-03-13

在 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(使用前将#替换为@)

如何创建 Inline 类的子类? (FlowDocument 中使用的) 的相关文章

  • .NET ServiceModel.Syndicate - 更改 RSS 源的编码

    我正在尝试解决我在以下位置生成的所有 RSS 源的错误http captainobvio us http captainobvio us在 Internet Explorer 版本 8 和 9 中产生以下错误 进给代码错误 从当前切换 编码
  • 在 .NET 4 下运行的 .NET 2 和 .NET 4 程序集有什么区别

    我维护一个 NET 2 0 库 最近它的用户开始要求 NET 4 版本 我可以在 Visual Studio 中复制现有项目 设置Target Framework to NET Framework 4 0并完成它 但是在 NET 4 下运行
  • 密码盒和 MVVM

    我们有以下场景 MVVM 用户界面 用户可以在其中输入密码 实际上是一个PasswordBox 应该做一些工作的服务器 服务器连接到一些需要身份验证的数据库 我已经读过这个关于MVVM中PasswordBox的问题 https stacko
  • 在 Visual Studio 2010 解决方案级别定位 .NET Framework 的特定版本

    我想在我的 Visual Studio 2010 解决方案中同时针对 NET 3 5 和 NET 4 0 我知道我可以设置
  • 接口的隐式和显式实现

    在进行升级时 我碰巧遇到了这样的代码 interface ICustomization IMMColumnsDefinition GetColumnsDefinition class Customization ICustomization
  • .NET Framework 中的语言互操作性(基本概念)是什么?

    我正在阅读 NET框架 https en wikipedia org wiki NET Framework维基百科的文章 第一段描述了这个框架的一般概念 它说 它包括一个大型库 并提供跨多种编程语言的语言互操作性 每种语言可以使用用其他语言
  • 如何将当前应用程序域的程序集动态加载到c#项目中?

    我正在尝试加载第三方assemblies 动态地到项目并使用reflection创建其类型的实例 I used Assembly LoadFrom Assembly1 dll Assembly LoadFrom Assembly2 dll
  • 如何将 webmethod 与 telerik 批量编辑网格一起使用

    Work on Asp net vs2012 C telerik RadGrid batch edit I put save button outside from the grid Under the save button want t
  • 使用 TCP 套接字在本地代理视频

    我一直对向媒体浏览器添加对视频播客的支持非常感兴趣 我希望用户能够浏览可用的视频播客并从互联网上流式传输它们 这真的很容易 因为媒体播放器等将愉快地播放存在于云中的文件 问题是我想在本地缓存这些文件 因此同一集的后续观看将不涉及流式传输 而
  • 在 XAML 中设置依赖项属性时,为什么会在运行时绕过 .NET 属性包装器?

    我正在阅读 Adam Nathan 的书 WPF 4 Unleashed 第 82 页有以下警告 在 XAML 中设置依赖属性时 NET 属性包装器会在运行时被绕过 虽然 XAML 编译器依赖于 编译时的属性包装器 WPF 调用底层 直接在
  • ASP.NET MVC - 临时要求除一页之外的整个站点授权的简单方法

    我正在建立一个混合了公共页面和会员专用页面的网站 登录系统按原样工作正常 不过 我想启动一个封闭的 仅限邀请的预览 并暂时要求访问者登录才能执行除欢迎页面之外的所有操作 目前我有 Authorize 某些操作方法的属性 我也可以向其他操作方
  • .NET 或 Windows 同步原语性能规范

    我目前正在写一篇科学文章 我需要非常准确地引用 有人可以向我指出 MSDN MSDN 文章 一些已发表的文章来源或一本书 我可以在其中找到 Windows 或 NET 同步原语的性能比较 我知道这些是按性能降序排列的 互锁 API 关键部分
  • 如何使用 .NET 捕获我的桌面视频?

    我想知道是否有任何方法可以使用 NET 捕获我的桌面的视频 截屏视频 我并不是在寻找截屏软件 而只是在寻找一种可以让我自己生成桌面视频的技术 我想过拍摄多个屏幕截图 但我不确定如何以编程方式生成带有图像序列的视频 有人有主意吗 Thanks
  • 从 .NET 文本中提取关键字

    我需要计算每个关键字在字符串中重复出现的次数 并按最高次数排序 NET 代码中用于此目的的最快算法是什么 编辑 下面的代码将唯一标记与计数分组 string target src Split new char var results tar
  • SingleOrDefault异常处理

    我有一个示例代码 它调用 SingleOrDefault 方法 3 次 并在任何序列具有多个匹配元素时记录异常 如果我想检查这段代码的哪一部分抛出异常 问题就开始了 是否可以从此异常中获取一些有用的信息 例如谓词参数或集合类型以进行更详细的
  • 使用 TCP 时是否需要使用校验和来保护我的消息?

    使用 TCP 作为网络协议 在通过线路发送消息之前 我会为每条消息的大小 以及可能的校验和 添加前缀 我想知道 计算和传输消息的校验和是否有意义 以确保消息将被不变地传递 如果以及何时传递 例如因为一些网络错误 目前 我在发送消息本身之前发
  • 如何更改 Settings.settings 值的值

    我有一个简单的控制台应用程序 每天运行 由 Windows 任务计划程序调用 并且取决于每次应用程序运行时递增的值 为了保留这个值 我选择使用 Settings Settings 文件 因此 我有一个名为 RunNumber 和 Scope
  • 将参数传递给模板类型的 C# 泛型 new()

    添加到列表时 我试图通过其构造函数创建一个 T 类型的新对象 我收到编译错误 错误消息是 T 创建变量实例时无法提供参数 但我的类确实有一个构造函数参数 我怎样才能做到这一点 public static string GetAllItems
  • 在不可变类型的构造函数中生成HashCode

    我对不可变类型的 HashCode 有一些疑问 我可以在构造函数中 预 生成不可变类型的 HashCode 还是有任何理由不这样做 当调用 GetHashCode 方法时 我是否应该再次生成哈希码 这是一个示例类 public class
  • 更改 WPF 应用程序清单?

    我已经发布给微软的评论 http connect microsoft com VisualStudio feedback ViewFeedback aspx FeedbackID 420920WPF 中的对话框未启用 VisualStyle

随机推荐