WPF:如何在文本流中嵌入按钮(将文本环绕按钮)?

WPF:如何在文本流中嵌入按钮(将文本环绕按钮)?,wpf,button,flowdocument,word-wrap,wrappanel,Wpf,Button,Flowdocument,Word Wrap,Wrappanel,我想对以下问题提出建议:我想将按钮嵌入到文本流中,但是当我将按钮和标签(或文本块)嵌入包装面板时,我得到第一个图: 我认为其中一个解决方案可能是FlowDocument,但我觉得对于这样一个简单的控件(可以在几百个实例中使用)来说,这太重了。关于如何实现这一点,您还有其他想法吗?谢谢大家! 编辑: 一种解决方案可能是如下(我不知道可以在TextBlock中放入更多内容),但我将失去绑定功能(我需要): 要绑定到Run.Text,请按Fortes签出类。易于实现,我在所有项目中都使用它。解决方案

我想对以下问题提出建议:我想将
按钮
嵌入到文本流中,但是当我将
按钮
标签
(或
文本块
)嵌入
包装面板
时,我得到第一个图:

我认为其中一个解决方案可能是
FlowDocument
,但我觉得对于这样一个简单的控件(可以在几百个实例中使用)来说,这太重了。关于如何实现这一点,您还有其他想法吗?谢谢大家!

编辑: 一种解决方案可能是如下(我不知道可以在
TextBlock
中放入更多内容),但我将失去绑定功能(我需要):


要绑定到Run.Text,请按Fortes签出类。易于实现,我在所有项目中都使用它。

解决方案:类+以下标记:

<TextBlock>
    <Button x:Name="MyButton" Command="{Binding Path=MyCommand}" Content="+" />
    <common:BindableRun x:Name="Subject" BindableText="{Binding Path=Subject}"/>
</TextBlock>


我发现正确实现BindableRun非常棘手,而且几乎所有其他可用的实现都会在绑定内容从空变为非空时导致wpf布局引擎出现异常-请参阅


Microsoft的Correct实现是-它显示了这是多么棘手。

有趣的是,它在用户控件的设计器上工作。。。 在这种情况下,使用控件的属性更改将值设置为Run就足够了。我是说,如果你有这样的事情:

<TextBlock>          
   <Run Text="{Binding ElementName=thisCtrl, Path=Description}" />
</TextBlock>


然后只需命名运行,并在UserControl DependencyProperty的属性更改处理程序上获取/设置值。

LOL,我在5分钟前发现了这个问题,并用它实现了一个解决方案:))。无论如何,谢谢:)。我发现正确实现BindableRun是相当棘手的-当绑定内容从null更改为非null时,您的(以及几乎所有其他可用的实现)将导致wpf布局引擎出现异常。微软的Correct实现就在这里,但确实很棘手
<TextBlock>          
   <Run Text="{Binding ElementName=thisCtrl, Path=Description}" />
</TextBlock>