WP7 обтекание текста вокруг изображения - PullRequest
2 голосов
/ 07 декабря 2011

У меня есть этот код:

<ScrollViewer x:Name="textScroller" Grid.Row="2">
        <Grid x:Name="ContentPanel" Margin="12,0,12,0" DataContext="{Binding}">
        <Image x:Name="ImageUrl" Source="{Binding ImageUrl}" Height="198" Width="150" Margin="10 10 10 10" FlowDirection="RightToLeft" HorizontalAlignment="Left" VerticalAlignment="Top"  />
        <TextBlock x:Name="Content" Text="{Binding Content}" TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}" Margin="0,41,24,-41" LineStackingStrategy="BlockLineHeight"  MaxWidth="478"  />
        </Grid>
</ScrollViewer>

Изображение в этом коде является фоном этого текстового блока, но я хочу, чтобы этот текст обернулся вокруг изображения.Это возможно?Я нашел этот похожий вопрос , и есть ответ, который невозможен только с изображением и текстовым блоком.Это правильно?Я действительно не могу установить какой-либо атрибут в изображении, который устанавливает, что текст не может быть на изображении?Как я должен изменить свой код?Спасибо

Редактировать: Теперь вот как выглядит моя страница:

image is background

Я хочу, чтобы текст был справа от изображения и нижеизображение.

1 Ответ

0 голосов
/ 09 декабря 2011

Это дубликат WP7 обтекания текста вокруг изображения и Silverlight текста вокруг изображения , хотя на эти вопросы также не было получено принятых ответов.В Silverlight нет такой опции, чтобы автоматически оборачивать текст вокруг изображений.Вы можете использовать компонент WebBrowser или использовать несколько TextBlocks, измеряя размер текста, добавляя слова в TextBlocks в памяти и проверяя, когда остановиться и переключиться на другой TextBlock.Я также рекомендую прочитать статью о метриках шрифта - MSDN - Границы пользовательского интерфейса: метрики шрифтов в Silverlight, Чарльз Петцольд .

РЕДАКТИРОВАТЬ: Жестко закодированный образец:

Вы можете использовать приведенный ниже код, чтобы делать то, что вы просите, жестко запрограммированным способом.Возможно, вы могли бы написать некоторый код, который бы работал в качестве элемента управления - автоматически разбивая текст, определяя высоту вложенного текстового блока рядом с прямоугольником (или изображением).

<RichTextBox
    VerticalAlignment="Top"
    >
    <Paragraph
        TextAlignment="Left">
        <InlineUIContainer>
            <InlineUIContainer.Child>
                <Rectangle
                    Width="50"
                    Height="50"
                    Fill="Red" />
            </InlineUIContainer.Child>
        </InlineUIContainer>
        <InlineUIContainer>
            <Border>
                <TextBlock
                    Padding="0"
                    Width="370"
                    Margin="0,0,0,-5"
                    TextWrapping="Wrap"
                    Text="First part of text that fits to the right of the image before the other part wraps to">
                </TextBlock>
            </Border>
        </InlineUIContainer>
        <Run
            Text="the next line. This part of the text is already below the image." />
    </Paragraph>
</RichTextBox>
...