我想对以下问题提出建议:我想在文本流中嵌入Button
,但是当我嵌入Button
和Label
(或{{1进入TextBlock
,我得到第一个数字:
alt text http://sklad.tomaskafka.com/files/wpf-wrappanel-problem.png
我认为其中一个解决方案可能是WrapPanel
,但我觉得这对于像这样简单的控件来说太沉重了(可以在几百个实例中使用)。您对如何实现这一点有其他想法吗?谢谢!
编辑:
一个解决方案可能是以下(我不知道可以将更多内容放入FlowDocument
),但我将失去绑定的能力(我需要):
TextBlock
答案 0 :(得分:1)
要绑定到Run.Text,请查看Fortes的BindableRun课程。易于实现,我在我的项目中使用它。
答案 1 :(得分:1)
我发现正确实现BindableRun非常棘手 - 当绑定内容从null更改为非null时,几乎所有其他可用实现都会导致wpf布局引擎发生异常 - 请参阅this problem, keyword "Collection was modified; enumeration operation may not execute."
来自Microsoft的正确实施是here - 它显示了这是多么棘手。
答案 2 :(得分:0)
解决方案:BindableRun class +以下标记:
<TextBlock>
<Button x:Name="MyButton" Command="{Binding Path=MyCommand}" Content="+" />
<common:BindableRun x:Name="Subject" BindableText="{Binding Path=Subject}"/>
</TextBlock>
答案 3 :(得分:0)
有趣的是它适用于UserControl的设计者...... 在这种情况下,使用控件的Property Change将值设置为Run就足够了。我的意思是,如果你有类似的东西:
<TextBlock>
<Run Text="{Binding ElementName=thisCtrl, Path=Description}" />
</TextBlock>
然后只需命名运行,并在UserControl DependencyProperty的属性更改处理程序中获取/设置值。