WPF 使用数据绑定显示格式化的多行文本

2023-12-02

我需要使用 WPF 数据绑定显示以下内容(值发生变化)。标题必须是粗体,信息行是普通文本。如果给定标头的信息不存在,我想折叠该部分,包括标头。我更喜欢所有数据(标题和信息项)都位于一个格式化字符串中,该字符串可以在我想要的位置换行。

Header1:

我的信息1

我的信息2

Header2:

我的信息3

我的信息4


还有一种方法可以尝试。使用TextBlock.Inlines。然后将您的模型绑定到 TextBlock,并且可以自定义值转换器或者通过自定义附加属性解析您的模型以填充 TextBlock 的内联。

以下是附加属性的示例,它采用文本字符串并使每隔一个单词变为粗体:

public class RunExtender : DependencyObject
{
    public static string GetText(DependencyObject obj)
    {
        return (string)obj.GetValue(TextProperty);
    }

    public static void SetText(DependencyObject obj, string value)
    {
        obj.SetValue(TextProperty, value);
    }

    public static readonly DependencyProperty TextProperty = DependencyProperty.RegisterAttached("Text", typeof(string), typeof(RunExtender), new PropertyMetadata(string.Empty, OnBindingTextChanged));

    private static void OnBindingTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var bindingText = e.NewValue as string;
        var text = d as TextBlock;
        if (text != null)
        {
            text.Inlines.Clear();
            var words = bindingText.Split(' ');
            for (int i = 0; i < words.Length; i++)
            {
                var word = words[i];
                var inline = new Run() {Text = word + ' '};
                if (i%2 == 0)
                {
                    inline.FontWeight = FontWeights.Bold;
                }
                text.Inlines.Add(inline);
            }
        }
    }
}

这不是生产质量代码,它取自 Silverlight 演示,但您明白了。

希望这可以帮助。

干杯,安瓦卡。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 使用数据绑定显示格式化的多行文本 的相关文章

  • WPF - 位图效果上的编程绑定

    我希望能够以编程方式将一些数据绑定到 a 上的依赖属性位图效果 对于像 TextBlock 这样的 FrameworkElement 有一个 SetBinding 方法 您可以通过编程方式执行这些绑定 例如 myTextBlock SetB
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 在资源字典中添加字体系列

    我正在使用msdn教程 http msdn microsoft com en us library ms753303 aspx wa wsignin1 0要在我的 Wpf 应用程序中添加 FontFamily 在 csproj 中我有
  • WPF 还是 WinForms 作为内部工具?

    在我的公司 我们开发了许多内部工具 从简单的实用程序到成熟的编辑器 这些工具的首要任务是稳定性 可用性和周转时间 意味着添加新功能的速度 到目前为止 我们一直在使用 WinForms 但有几个新工具正在酝酿中 我正在权衡是否应该继续使用 W
  • 创建可重用的 WINDOW 控件

    好吧 这似乎很难 或者我错过了一些明显的东西 我想创建可重复使用的 WINDOW 它将在所有产品中使用 这意味着该控件位于 WPF Controls 程序集中 Themes Generic xaml 不是一个解决方案 我需要为窗口提供自己的
  • 使用 Assembly.ReflectionOnlyLoadFrom 加载 WPF 项目引用的程序集时出现奇怪的 FileLoadException

    我有一个自定义 MSBuild 任务 可以查看程序集内部以获取一些属性元数据 Assembly assembly Assembly ReflectionOnlyLoadFrom AssemblyFile 这是我们的自动化构建 发布流程所使用
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 将快捷键分配给 WPF 中的按钮

    如何为WPF中的按钮分配快捷键 谷歌搜索给了我答案 即在标准 Winforms 中附加 而不是 所以在我完成以下操作后
  • WPF:将布尔值显示为“是”/“否”

    我有一个布尔值 需要在 TextBlock 中显示为 是 或 否 我尝试使用 StringFormat 执行此操作 但我的 StringFormat 被忽略并且 TextBlock 显示 True 或 False
  • 使用 RenderTargetBitmap 的 WPF 画布区域的快照

    我想在我的应用程序中创建画布区域的快照 我使用 Visual Brush 来获取快照并使用 PngEncoder 保存相同的快照 但生成的 PNG 只是一个空的黑色图像 我不确定问题是与创建的 BitmapSource 还是 PNGEnco
  • 如何在 html 画布上使文本适合精确的宽度?

    如何在 html5 画布上将单行文本字符串调整为精确的宽度 到目前为止我尝试过的是以初始字体大小编写文本 测量文本的宽度measureText my text width 然后根据我想要的文本宽度和实际文本宽度之间的比例计算新的字体大小 它
  • 以编程方式绑定 WPF 中的附加属性

    我在用着杰森 坎普很酷CueBanner class http www ageektrapped com blog the missing net 4 cue banner in wpf i mean watermark in wpf 对于
  • 为什么在此 MultiBinding 上未调用 ConvertBack?

    我的组合框列表联系人使用 MultiBinding 绑定到 FullName 和 PhoneExtension IMul tiValueConverter 的 Convert 方法被调用 但 ConvertBack 未被调用 为什么 组合框
  • WPF 中图像的淡入淡出

    当我更改幻灯片放映等图像源时 如何实现淡入和淡出图像 我的图像从本地和网络加载 并且其数量是可变的 谢谢 您可以编写一个扩展方法 通过动画显示图像来淡出图像Opacity属性设置为 0 然后设置Source属性并最终将不透明度动画回到 1
  • 通过 RDP 使用 WPF 的 Direct2d

    我正在开发一个 C 应用程序 它使用 SharpDx 通过 Direct2d 渲染地图 该地图与 D3DImage 一起显示在 WPF 主机上 在本地计算机上 一切正常 但当我尝试通过远程桌面连接时 D3DImage 会丢失其后备缓冲区 并
  • TextBlock TextWrapping 不换行 #2

    好吧 那么this https stackoverflow com questions 6625177 textblock textwrapping not wrapping解决方案没有帮助 XAML 在这里
  • 现代 UI WPF 导航

    我正在使用现代 ui wpf 并尝试从 CheckLogin xaml 页面导航到 MainWindow xaml 页面 它们位于解决方案根目录中 我在 CheckLogin xaml 中写了这样的内容 BBCodeBlock bbBloc
  • 什么是 ng-template 以及为什么我要将 *ngIf then else 绑定到它?

    当我将 ngIf 与 then 和 或 else 语句一起使用时 为什么我必须绑定到附加到ng template元素 例如 这有效 div Text to show div
  • Mahapps 弹出窗口未与 caliburn.micro 一起出现

    我试图使用 mahapps 和 caliburn micro 在 wpf 中显示弹出窗口 不幸的是 弹出窗口的视图未得到解析 我得到的只是弹出窗口中显示的视图模型的类型名称 我需要根据 shell 中的 ActiveItem 显示弹出窗口
  • 列表元素之间的 Tab WPF

    我有一个列表框 其中每个项目都使用文本框表示 问题是我希望能够在移动到 xaml 窗口中的下一个元素之前在列表框中的所有项目之间进行切换 当前 和正常的 WPF 行为 是 当我按 Tab 键进入列表框时 第一个元素会突出显示 如果我再次按

随机推荐

  • 如何在 Java 中指定我自己的 Rhino 上下文?

    我试图确保我的 Rhino 脚本 在 Java 6 下运行 是严格的 这样如果脚本开发人员拼错了表达式 我希望抛出异常 目前发生的情况是表达式简单地计算为 未定义 现在根据 Mozilla 组织https developer mozilla
  • 如何使用PHP问题从另一个数组中删除一个数组值

    我想检查示例 1 中的任何数组值是否在示例 2 中 如果在 则将它们从示例 2 中删除 我怎样才能使用 PHP 来做到这一点 实施例1 Array 0 gt 3 1 gt 5 实施例2 Array 0 gt 3 1 gt 3 2 gt 4
  • Rails - 当我仅访问生产中的操作时,401 未经授权

    我正在使用 Ruby On Rails 3 0 9 并且在开发环境中一切正常 当我切换到生产环境或将其上传到我们的服务器时 登录后我会返回到相同的登录页面 当我检查日志时 我可以看到以下内容 Started POST users login
  • C# 7.0 适用于 .NET 4.5 吗?

    我在 Visual Studio 2017 RC 中创建了一个项目 以检查是否可以在 NET Framework 4 5 项目中使用新的 C 7 0 语言功能 在我看来 参考后System ValueTupleNuGet 新元组工作正常 还
  • 如何让边框底部更接近文本?

    我想对链接使用边框底线 而不是文本装饰下划线 但我需要让线条更靠近文本 负填充是不可能的 那么我该怎么办 这是一个例子 a color 245fc1 position relative border bottom 1px solid 245
  • 如何在 Visual Studio 模拟器上删除设备的框架?

    我只需要与开发和测试相关的内容 我不需要巨大的 模拟 哑边框区域 该区域主要用于抓取和重新定位模拟器窗口 如今 即使是真正的设备也开始消除这些边框 我不需要它提供的有关设备方向的方向线索 在工具条或主窗口中 只需小的抓握手柄就足够了 它浪费
  • Angular v10 Service Worker 官方更新方法不起作用

    编辑摘要 我创建了一个最小的可重现的例子 我不再相信这与 css 或任何相关 font face就此问题作出的声明 问题在于官方的 Angular 方式swUpdate checkForUpdate 可能与appRef isStable订阅
  • 如何使用 Express 服务器对 api.github 进行 GET 调用

    我已经被封锁三天了 并在互联网上进行了研究 这是代码 api js const express require express const router express Router var http require http var ht
  • 如何使用内胚包装器来修复这个练习?

    这是我之前的后续question 假设我需要按路径查找 XML 节点 我可以编写一个函数来按名称获取子节点 import scala xml Node gt XmlNode def child name String XmlNode Opt
  • 将 print 的输出分配给 python 中的变量

    我想知道如何将 print 的输出分配给变量 so if mystring a 12 then print mystring a 12 我想像 kwargs 一样传递这个 test mystring 我怎样才能做到这一点 有关更多解释 我有
  • 如何使用自定义ant规则正则表达式更改属性文件中的属性

    在我的 Android 项目中 我在 project properties 文件中设置了以下属性 proguard config proguard cfg 我需要一个自定义宏来以某种方式设置和取消设置此属性 如何使用宏和正则表达式设置取消设
  • C# 引用和指针有什么区别?

    我不太明白 C 引用和指针之间的区别 它们都指向记忆中的某个地方 不是吗 我能弄清楚的唯一区别是指针不那么聪明 不能指向堆上的任何东西 可以免于垃圾回收 并且只能引用结构或基类型 我问这个问题的原因之一是 人们认为人们需要很好地理解指针 我
  • 在curl中发送json文件并使用plumber在R中接收它

    我需要发送一个包含多个值的 json 文件并使用水管工在 R 中接收它 我尝试过这个 但它似乎不起作用 library rjson install packages rjson get predict post predict functi
  • Jquery 实时复制另一个文本框值

    我想获取另一个文本框的值并将其实时输入到另一个文本框中 如何检测 TEXT 3 是否已更改 如果 TEXT 3 值更改 则必须将其输入到 TEXT 4 为了您的方便 这里是代码和演示 HTML
  • 使用PHP查询MDB文件,并返回JSON

    我有一个 Microsoft Access 数据库 我正在尝试使用 PHP 查询该表 并输出有效的 JSON 我有一个 MSSQL 数据库的等效代码 我正在尝试让我的代码做同样的事情 但只是针对 Access 数据库 这是MSSQL代码 m
  • Angular2 嵌套 formGroups - formArrays 和模板绑定

    问题是这样的 我有一个带有嵌套表单组的复杂表单 这是它的 简化 结构 gt MyForm formGroup gt Whatever01 formControl input gt Whatever02 formControl input g
  • Bundler如何卸载冲突的依赖项

    我正在尝试执行vagrant plugin install vagrant vbguest在我的 Mac 上 ProductName Mac OS X ProductVersion 10 12 6 BuildVersion 16G29 但之
  • 分页时出现 SQL 错误

    大家好 我们有一个完美工作的关系控制器网页 index admin 但在添加分页后 它全部崩溃了 想出 SQLSTATE 42S22 Column not found 1054 Unknown column Relationship sen
  • 我想在 Nuxt.js 中的 Vuex 中使用 window.localStorage

    我开发 nuxt js 应用程序 重点是登录和注销 我们将开发 JWT 系统的登录 您必须保持 vuex 登录状态 但是 当我刷新页面时 vuex 被初始化 我读过 gitvuex 持久状态 但很难理解如何初始化和设置它 在 nuxt js
  • WPF 使用数据绑定显示格式化的多行文本

    我需要使用 WPF 数据绑定显示以下内容 值发生变化 标题必须是粗体 信息行是普通文本 如果给定标头的信息不存在 我想折叠该部分 包括标头 我更喜欢所有数据 标题和信息项 都位于一个格式化字符串中 该字符串可以在我想要的位置换行 Heade