【发布时间】:2016-05-09 11:03:21
【问题描述】:
我正在向StackPanel 中的Border 元素添加一些TextBlock 元素。
我通过添加Inlines 来添加和格式化TextBlock 的文本。
点击后,我想获取TextBlock的格式化文本。这是我的代码。
public void addText()
{
TextBlock myText = new TextBlock();
myText.Inlines.Add(new Bold(new Run("Hello ")));
myText.Inlines.Add("World!");
Border myBorder = new Border();
myBorder.Child = myText;
myBorder.MouseDown += new MouseButtonEventHandler(Border_Clicked);
myStackPanel.Children.Add(myBorder);
}
private void Border_Clicked(object sender, MouseButtonEventArgs e)
{
//Border senderBox = (Border)sender;
//TextBlock senderText = (TextBlock)senderBox.Child;
//Bold inline = (Bold) senderText.Inlines.ElementAt(0);
// How to Output "Hello "?
}
Border_Clicked 应该输出“Hello”。如您所见,我可以使用粗体文本,但我该如何输出呢?
【问题讨论】:
-
我认为内联只在 XAML 中直接有效。您可以在转换器中创建内联,但它很混乱。您可以在 FlowDocument 查看器中执行 FlowDocument。
-
为了清楚地了解您的要求,请告诉我您想在 Border_Clicked 事件中获取粗体文本(Hello ),对吗?
-
你不能像this answer一样简单地设置属性
FontWeight吗?类似myText.Inlines.Add(new Run("Bold text") { FontWeight = FontWeight.Bold }); -
@Davy 是的,这正是我想要实现的目标。
-
@Sinatr 我没试过。如果我这样做,我将如何获得文本?
标签: c# wpf visual-studio textblock