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

毁灭

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

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,524
地点
悉尼,澳大利亚
编程经验
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 and easily specify how it gets formatted. The RichTextBox does it by loading RTF markup and 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 and use HTML markup to format. That's a bit more human-readable than RTF and web browsers are read-only by default.
 

跳伞

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

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,926
地点
英国
编程经验
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,926
地点
英国
编程经验
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,532
地点
弗吉尼亚州切萨皮克
编程经验
10+
问题的一部分是您正在使用单个标签来保存多个数据,在这种情况下为多个行星。如果每个行星只有一个标签,那么问题将变得更易于管理。对于每个标签,不仅要绑定行星,还要将标签的颜色绑定到转换器。转换器的工作是将行星映射到一种颜色。
 

羊皮

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

跳伞

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

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