我在资源文件中有几个字符串,都需要翻译。这些字符串将连接成一个句子并显示在我的应用程序中的TextBlock
内,我想在TextBlock
内部使一些字符串变为粗体。
E.g。
string a = "This {0} a {1} string.";
string b = "is";
string c = "formatted";
string output = string.Format(a, b, c);
我希望输出为: 格式化字符串。
欢迎任何提示和提示。
答案 0 :(得分:2)
在<Run />
内使用TextBlock
获取特定字词的其他样式。
<TextBlock>
This
<Run FontWeight="Bold">is</Run>
a
<Run FontWeight="Bold">formatted</Run>
string.
</TextBlock>
这是一个简单的例子,可以给你一个想法。我创建了一个名为UserControl
的{{1}},其中XAML仅包含此内容 -
TextControl
在其代码隐藏中,我定义了三个依赖属性。一种是获取完整的资源字符串,另外两种是传递<TextBlock x:Name="MyTextBlock" />
和{0}
。我们的想法是将整个字符串拆分为 space ,然后将{1}
替换为输入属性,并将它们设为粗体。
{x}
然后你可以像这样使用它 -
public string ResourceString
{
get => (string)GetValue(ResourceStringProperty);
set => SetValue(ResourceStringProperty, value);
}
public static readonly DependencyProperty ResourceStringProperty = DependencyProperty.Register(
"ResourceString", typeof(string), typeof(TextControl), new PropertyMetadata(default(string), (s, e) =>
{
var self = (TextControl)s;
var full = e.NewValue.ToString();
foreach (var seg in full.Split(' '))
{
var run = new Run();
if (seg.Contains("{0}"))
{
run.Text = self.Input0;
run.FontWeight = FontWeights.Bold;
}
else if (seg.Contains("{1}"))
{
run.Text = self.Input1;
run.FontWeight = FontWeights.Bold;
}
else
{
run.Text = seg;
}
run.Text += " ";
self.MyTextBlock.Inlines.Add(run);
}
}));
public string Input0
{
get => (string)GetValue(Input0Property);
set => SetValue(Input0Property, value);
}
public static readonly DependencyProperty Input0Property = DependencyProperty.Register(
"Input0", typeof(string), typeof(TextControl), new PropertyMetadata(default(string)));
public string Input1
{
get => (string)GetValue(Input1Property);
set => SetValue(Input1Property, value);
}
public static readonly DependencyProperty Input1Property = DependencyProperty.Register(
"Input1", typeof(string), typeof(TextControl), new PropertyMetadata(default(string)));
你得到 -
答案 1 :(得分:0)
在这里,您可以找到有关样式化文本块的大量信息:http://www.wpf-tutorial.com/basic-controls/the-textblock-control-inline-formatting/
我建议您使用span方法解决问题,因为您希望使用程序代码
祝你好运