C# 具有可变文本块数的WPF RichTextBox(使用ItemsControl创建)将丢失选择行为
我需要在wpf中的多行文本框中显示一些内容,其中一些内容,我想显示粗体(或任何我想要的格式) 所以我最终搜索了一个控件,发现RichTextBox可以通过在其中使用Run控件来完成这项工作。大概是这样的:C# 具有可变文本块数的WPF RichTextBox(使用ItemsControl创建)将丢失选择行为,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我需要在wpf中的多行文本框中显示一些内容,其中一些内容,我想显示粗体(或任何我想要的格式) 所以我最终搜索了一个控件,发现RichTextBox可以通过在其中使用Run控件来完成这项工作。大概是这样的: <RichTextBox> <FlowDocument> <Paragraph> <Run Text="Text to be displayed in Bold" Font
<RichTextBox>
<FlowDocument>
<Paragraph>
<Run Text="Text to be displayed in Bold" FontWeight="Bold"/>
<Run Text="Normal text"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
FlowDocument fd = new FlowDocument();
fd.LineHeight = 1;
foreach (var item in ((MyViewModel)this.DataContext).MyCollections)
{
Paragraph p = new Paragraph(new Run(item.MyTextInCollection) { FontWeight = FontWeights.Bold }); // bold text
Paragraph p = new Paragraph(new Run(item.MyTextInCollection)); // text with no formatting
fd.Blocks.Add(p);
}
MyTextBox.Document = fd;
这很好,我可以选择其中的内容,它也有很好的格式
但是现在下一个问题是,这个内容是动态的,我将在viewModel中创建它。因此,我尝试在RichTextBox中使用ItemsControl,如下所示:
<RichTextBox>
<FlowDocument>
<Paragraph>
<ItemsControl ItemsSource="{Binding MyCollections}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<!--< I want to use Run here, so that the content inside textbox is selectable, and I can even do formatting on Run >-->
<TextBlock Text="{Binding MyTextInCollection}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Paragraph>
</FlowDocument>
</RichTextBox>
但是我不能在DataTemplate中使用Run(如注释中的代码所示),所以我尝试使用TextBlock
现在的问题是,TextBox应该具有的基本选择行为,现在已经不存在了。我想做选择(通过使用Ctrl A,或者点击并拖动鼠标),还想做文本的复制。我现在不能这么做
任何帮助都将不胜感激 在这种情况下,标记onClick事件中没有给出 IJavaScriptExecutor jspop=(IJavaScriptExecutor)驱动程序 IWebElement elementpop=driver.FindElement(By.XPath(“html/body/div/ul/div”)
ExecuteScript(“参数[0]。单击()”,elementpop) 我是通过这种方式工作的: 在xaml中获取一个RichTextBox,并为其命名
<RichTextBox x:Name="MyTextBox" IsReadOnly="True" VerticalScrollBarVisibility="Visible" Margin="5" />
这样我就得到了内容的格式,以及我需要的选择行为是完整的
我知道我是在代码隐藏中而不是在xaml中这样做的,但这很好,因为这纯粹是我在代码隐藏中所做的查看内容,而不是ViewModel中应有的业务逻辑,您不使用运行,因为。。。?它不起作用?标题有点误导人,因为你的文本是基于文本块而不是运行。好的,我将编辑这个问题以使其更清楚。谢谢你,这是关于WPF控制的。我刚刚编辑了问题的标题以便更清楚。WPF不是javascript;)