可TextBlock用于具有在参数中指定的不同字体大小的文本片段<Run>:
<TextBlock><Run FontSize="14pt">15,</Run><Run FontSize="10pt">555333</Run></TextBlock>
它将如何从代码中胜任地更新这些值?
如果您指定 property Text,则将应用所有文本的值,并且字体将在任何地方都相同:
MyTextBlock.Text = "15,555333";
我试图这样做,但是随着数量的不断增加,然后更新文本,它被重新创建并且必须被清除:
// этот код находится в цикле
MyTextBlock.Text = null;
MyTextBlock.Inlines.Add(new Run("15,") { FontSize = 16 });
MyTextBlock.Inlines.Add(new Run("555333") { FontSize = 12 });
更新数据的正确方法是TextBlock什么?
我不知道这在以这种方式拆分数字的意义上有多正确,但在我看来,这种方法是最明显的——使用转换器。
例如,您有一个实现 的类
INotifyPropertyChanged,您在其上设置DataContext了一个属性,例如 this。如何实现
INotifyPropertyChanged和配置DataContext,我不会说,但是我之前已经发布过,例如here和here,你可以在StackOverflow上找到许多其他示例。现在我们可以创建这样一个转换器类。
代码非常简单,我想你可以很容易地阅读它
转换器易于连接到窗口
然后文本块数据绑定将如下所示
请注意,它们
Run位于一条线上 - 这实际上很重要。如果您在 XAML 中进行换行,则它们之间的窗口中将有一个空格。顺便说一句,如果您删除
ConverterCulture=RU_ru,将使用默认文化 -EN_us,即分数将带有点。默认界面文化也可以更改。就是这样,现在您可以在代码中分配
并且号码将正确显示在界面中。通过编辑转换器代码,您可以应用必要的格式。
第二种同样明显的实现方式是在其中制作
UserControl和封装所有逻辑,而不需要转换器。