2010-10-09 52 views
2

我想要一些包装文本后面跟着一个按钮,但我希​​望按钮在最后一行文本后立即出现。有点像这样:如何使用Silverlight 4中的按钮制作包装文本?

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。[该按钮]

这是我在这样当前的尝试,但始终按钮上显示出的下一行,而不是在网上与最后一句。我认为WrapPanel会照顾到这一点,但我假设TextBlock的边界框填充整行。

<toolkit:WrapPanel Orientation="Horizontal" 
    Visibility="{Binding HasErrorMessage, 
     Converter={StaticResource BooleanToVisibilityConverter}, Mode=OneWay}"> 
    <TextBlock 
     Foreground="{StaticResource ErrorColorBrush}" TextWrapping="Wrap" 
     Text="{Binding ErrorMessage, Mode=OneWay}"/> 
    <Button 
     Click="ClearErrorButton_Click" 
     Content="Clear Error"/> 
</toolkit:WrapPanel> 

不正确的输出看起来是这样的:

Lorem存有悲坐阿梅德,consectetur adipisicing ELIT,sed的做eiusmod tempor incididunt UT labore等dolore麦格纳aliqua。

[该按钮]

回答

2

什么你想不会不幸工作。文本块是一个矩形,所以按钮将始终包裹在文本下方。但是,您可以使用文本块内的运行并做一些时髦的东西来正确定位按钮。幸运的是,Jeremy Likeness在这里使用附加属性做了一个很棒的博客文章:http://csharperimage.jeremylikness.com/2009/11/inline-hyperlinks-in-silverlight-3.html。他在文本中插入HyperlinkBut​​ton,但如果您愿意,可以将其更改为标准按钮。

希望这有助于...

克里斯

2

你将不得不使用SL4 RichTextBox控件得到你想要的结果:

<RichTextBox IsReadOnly="True" BorderThickness="0"> 
    <Paragraph> 
     <Run Text="{Binding ErrorMessage}"/> 
     <InlineUIContainer> 
      <Button Content="Clear Error" /> 
     </InlineUIContainer> 
    </Paragraph> 
</RichTextBox> 
4

用这个包裹按钮的内容,

<Button> 
<Button.Content> 
    <TextBlock Text="Your wrap text is here" TextWrapping="Wrap"/>   
</Button.Content> 
</Button> 
+0

只需添加此代码内的版本, 'TextBlock tb = new TextBlock(); tb.Text =“一些长串”; tb.TextWrapping = TextWrapping.Wrap; MenuButton b = new MenuButton(); b.Content = tb;' – IEnumerable 2014-05-20 03:13:09

相关问题