如何使Silverlight 4中的按钮与包装文本一致?

时间:2010-10-09 20:38:38

标签: silverlight xaml layout silverlight-4.0

我想要一些包装文本后面跟一个按钮,但我希​​望按钮在最后一行文本后立即出现。有点像这样:

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

这是我目前的尝试,但按钮始终显示在下一行,而不是与最后一句一致。我认为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 ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。

[按钮]

3 个答案:

答案 0 :(得分:4)

用它来包装按钮内容,

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

答案 1 :(得分:2)

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

希望这会有所帮助......

克里斯

答案 2 :(得分:2)

您必须使用SL4 RichTextBox控件来获得所需的结果:

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