Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有可变文本块数的WPF RichTextBox(使用ItemsControl创建)将丢失选择行为_C#_.net_Wpf_Xaml - Fatal编程技术网

C# 具有可变文本块数的WPF RichTextBox(使用ItemsControl创建)将丢失选择行为

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

我需要在wpf中的多行文本框中显示一些内容,其中一些内容,我想显示粗体(或任何我想要的格式)

所以我最终搜索了一个控件,发现RichTextBox可以通过在其中使用Run控件来完成这项工作。大概是这样的:

    <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;)