Windows手机:更改相同字符串内的字体大小

Windows手机:更改相同字符串内的字体大小

问题描述:

我有一个字符串属性,将显示为我的应用程序的磁贴内容。我想要做以下事情:在这个字符串的第一行中,我想以默认字体大小显示一些基本信息,但是在这个字符串的第二行中,我想显示两个字体大小较大的值...仍然这个字符串属性是一个...有没有什么办法来实现这个? 在此先感谢!Windows手机:更改相同字符串内的字体大小

<RichTextBox在WP8恕我直言,有点难对付。但是,只需一个<TextBlock>和一个转换器就可以轻松完成。

基本上使用相同的字符串运行,并将其传递给你的转换器,它返回你想格式化的子字符串(在你的情况下,你的字符串为你的行号)。

<!-- MyString is your Property, MyConverter is your Converter you programmed, ConverterParamter is the row_number that you want to pass to MyConver --> 
<TextBlock x:Name="tb"> 
    <Run FontSize="12" Text="{Binding MyString, Converter={StaticResource MyConverter}, ConverterParameter=0}"/> 
    <Run FontSize="24" Text="{Binding MyString, Converter={StaticResource MyConverter}, ConverterParameter=1}"/>     
</TextBlock> 

// sample Converter of what you want to do 
using System.Windows.Data; 
public class MyConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string return_string = ""; 
     int rowid = (int) parameter; 
     switch (rowid) 
     { 
      case 0: 
       return_string = "sub_string_row_0"; // calculate the substring for row 0 
       break; 
      case 1: 
       return_string = "sub_string_row_1"; // calculate the substring for row 1 
       break; 
      default: 
       break; 
     }  
     return return_string; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return null; 
    } 
} 

记得来定义转换器在你的资源,像这样

<phone:PhoneApplicationPage.Resources> 
    <converter:MyConverter x:Key="MyConverter"/> 
</phone:PhoneApplicationPage.Resources> 

哪里<conveter:>

<phone:PhoneApplicationPage 
    xmlns:converter="clr-namespace:YOUR_NAMESPACE_OF_YOUR_PROGRAM"> 
+0

非常感谢你的回答......我想我明白你给我建议的方式,但我从XAML对象获取文本,并通过它的部分粘在C#中的字符串...我会得到'tb'文本块的文本? – 2014-10-19 19:44:22

+0

@AlexAllafi哦,你不直接设置TB的文本。我将它的值绑定到名为“MyString”的属性。如果您想要一个示例,请在Databinding上查找示例教程(这非常简单)。 – 2014-10-21 00:23:38

如果你创建3个额外的属性,它们将返回你的“主”字符串的一部分,这将会容易得多。

例如:

public string PartOne { get { return myString.SubString(0, 3); }}