Windows phone:在同一字符串内更改字体大小
本文关键字:字体 字符串 phone Windows | 更新日期: 2023-09-27 18:26:57
我有一个字符串属性,它将作为内容显示在我的应用程序的tile中。我想做以下事情:在这个字符串的第一行,我想用默认字体显示一些基本信息,但在这个字符串第二行,我要用更大的字体显示两个值。。。这个字符串属性仍然是一个。。。有什么方法可以实现这一点吗?提前感谢!
<RichTextBox
在WP8 IMHO中有些难以处理。但只需一个<TextBlock>
和一个转换器就可以轻松完成。
基本上,将Run与相同的字符串一起使用,并将其传递给Converter,Converter会返回您想要格式化的SubString(在您的情况下,是行号的字符串)。
<!-- 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">
如果您创建3个额外的属性,每个属性只返回"main"字符串的一部分,那么会容易得多。
例如:
public string PartOne { get { return myString.SubString(0, 3); }}