已回答 在不使用RichText框的情况下设置子字符串的颜色?

毁灭

活跃的成员
已加入
2020年3月28日
留言内容
36
编程经验
1-3
是否可以在不使用RTF文本框的情况下更改单个变量中子字符串的颜色?
目前,我正在使用标签,并希望为单个字符串赋予不同的颜色。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
是否可以在不使用RTF文本框的情况下更改单个变量中子字符串的颜色?
That doesn't really make sense as asked. A String is just text. It doesn't contain any information about how that text should be displayed unless it is interpreted as markup, e.g. RTF or HTML. You can instruct a Label how to display the text as a whole, e.g. by specifying a font or colour, but variable formatting takes something more.
目前,我正在使用标签,并希望为单个字符串赋予不同的颜色。
The Label does have a Content property but then you'd need to assign something to that that could do the variable formatting. There's certainly no standard control that will allow you to load plain text 和 easily specify how it gets formatted. The RichTextBox does it by loading RTF markup 和 interpreting that. Another option that is still not the simple magic solution you want but might be easier than RTF is to use some sort of web browser control 和 use HTML markup to format. That's a bit more human-readable than RTF 和 web browsers are read-only by default.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,499
地点
弗吉尼亚州切萨皮克
编程经验
10+
出于好奇,是否存在某种风格的UI趋势正在推动这个问题?几天前,有人在DIC中问了类似的问题,但涉及的是DevExpress标签而不是WPF标签。是否有每个人都在尝试模仿的网站或某种电话应用程序,使标签具有多种样式?
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
为标签创建类并围绕该标签类创建模板有什么问题?
还是在xaml标签周围创建模板(如果您已设计模板)?

您可以在xaml中完成在Web浏览器控件中可以执行的任何操作。您在WPF中的选择绝不会受到限制,实际上,您有多种方法可以在WPF中进行处理。除非这里的某人有时间向您展示使用自定义模板的示例,否则任何独立的搜索引擎都无法提供帮助。

坦白说,如果您要创建复杂的UI系统,建议您使用asp.net MVC应用程序,并为您的Web项目创建桌面包装。这是当今开发时尚桌面UI系统的最现代方法,大多数开发人员已开始采用这种方法。我本人已经在建立这样的项目已有一段时间了。

我会像过去一样向您提供一个例子,除了我非常忙碌,因为我即将发布职业生涯年底最大的项目之一。从自定义模板开始。
 

毁灭

活跃的成员
已加入
2020年3月28日
留言内容
36
编程经验
1-3
为标签创建类并围绕该标签类创建模板有什么问题?
还是在xaml标签周围创建模板(如果您已设计模板)?

您可以在xaml中完成在Web浏览器控件中可以执行的任何操作。您在WPF中的选择绝不会受到限制,实际上,您有多种方法可以在WPF中进行处理。除非这里的某人有时间向您展示使用自定义模板的示例,否则任何独立的搜索引擎都无法提供帮助。

坦白说,如果您要创建复杂的UI系统,建议您使用asp.net MVC应用程序,并为您的Web项目创建桌面包装。这是当今开发时尚桌面UI系统的最现代方法,大多数开发人员已开始采用这种方法。我本人已经在建立这样的项目已有一段时间了。

我会像过去一样向您提供一个例子,除了我非常忙碌,因为我即将发布职业生涯年底最大的项目之一。从自定义模板开始。
祝您项目顺利。由于我当前的项目有很多工作要做,因此我将直接使用rtf。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+
模板更容易。潜水之前先进行研究。
 

毁灭

活跃的成员
已加入
2020年3月28日
留言内容
36
编程经验
1-3
@谢平 我研究了dataTriggers,但仍然可以了解模板和样式。

我的标签显示的是ViewModel中的行星,但是我想根据显示的行星来更改标签内容的颜色。

一个标签可以容纳多个行星,如下所示:
土星19°
木星25°
金星65°

水星76°
我想为每个星球分配不同的颜色。
 
Last edited:

毁灭

活跃的成员
已加入
2020年3月28日
留言内容
36
编程经验
1-3
好吧,看起来并不容易。假设 "Saturn 19 + "\xb0" + "\n" + "Jupiter 25" + "\xb0" + "\n" + "Venus 65" + "\xb0" + "\n" + "Mercury 76" + "\xb0" + "\n" 是一个单个字符串,在标签中显示为:

土星19°
木星25°
金星65°

水星76°


但我想显示为
土星19°
木星25°
金星65°

水星76°

每个Planet应该有自己的颜色,但是整个字符串都在单个标签中绑定到单个变量。

字符串变量中将存在多少个行星是基于视图模型中的计算。视图模型使用迭代以这种形式附加所有行星:
"Saturn 19 + "\xb0" + "\n" + "Jupiter 25" + "\xb0" + "\n" + "Venus 65" + "\xb0"

我仍然可以使用Xaml模板进行此类操作吗? @谢平
 
Last edited:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,499
地点
弗吉尼亚州切萨皮克
编程经验
10+
问题的一部分是您正在使用单个标签来保存多个数据,在这种情况下为多个行星。如果每个行星只有一个标签,那么问题将变得更易于管理。对于每个标签,不仅要绑定行星,还要将标签的颜色绑定到转换器。转换器的工作是将行星映射到一种颜色。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,923
地点
英国
编程经验
10+

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,499
地点
弗吉尼亚州切萨皮克
编程经验
10+
我有的代码 帖子#19 GlassWizard的线程采用了一种在视图模型中分配颜色的方法。我这样做是因为模型和问题域直接处理颜色。

大多数人采用的方法是使用转换器。转换器更合适,因为模型和域实际上并不关心颜色。关心颜色的是视图模型。因此,在正常情况下,您不希望颜色出现在数据模型中。您希望视图或支持视图模型选择颜色。看到 此博客文章 看看是怎么做的。
 
最佳 底部