1

ニュースを表示するためのコントロールを作成しました。それぞれの新しいものには、テキストと画像が含まれています。ここで、RichTextBox の例を見つけました。

<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>

しかし、問題があります: new には 1 つのテキスト ブロック ( <p>...</p>) が含まれており、example から 2 つのテキスト ブロックのテキストを動的に分割することはできません。どうすれば問題を解決できますか? ありがとうございました。 UPD:これが私のコントロールのマークアップです:

<UserControl>
    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}" Margin="0,0,0,-100">     
        <TextBlock x:Name="tblNewName" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Width="460" Height="50" TextAlignment="Center" FontFamily="Mangal"/>
        <Grid Height="105" Width="441">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="97*"/>
                <ColumnDefinition Width="344*"/>
            </Grid.ColumnDefinitions>
            <Image x:Name="imgThumbnail" Grid.ColumnSpan="2" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"/>
            <TextBlock Grid.Column="1" x:Name="tblNewTeaser" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Width="460" Height="50" TextAlignment="Center" FontFamily="Mangal"/>
        </Grid>
    </Grid>
</UserControl>

画像の周りのテキストブロックでテキストを折り返す必要があります。

4

1 に答える 1

1

どのようなデータを表示しようとしていますか? これはHTMLですか?ニュースデータの例を教えてください。

更新: 必要なものは次のとおりです。

 public class NewsItem
    {
        public string ImageUri { get; set; }
        public IEnumerable<string> Paragraphs { get; set; }        
    }

<DataTemplate x:Key="newsTemplate">
            <Grid Height="105" Width="441">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="97*"/>
                    <ColumnDefinition Width="344*"/>
                </Grid.ColumnDefinitions>
                <Image Grid.ColumnSpan="2" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"/>
                <ListBox Grid.Column="1" ItemsSource="{Binding Paragraphs}"></ListBox>
            </Grid>
        </DataTemplate>

<Grid x:Name="colorPlace" Grid.Row="1" Margin="12,0,12,0"/>        
<ListBox Grid.Row="1" Name="newList" ItemTemplate="{StaticResource newsTemplate}">

</ListBox>
</Grid>

そして最後に:

var data = new List<NewsItem>
                       {
                           new NewsItem
                           {
                               ImageUri = String.Empty,
                               Paragraphs = new[]
                                            {
                                                "blablabla",
                                                "blablabla",
                                                "blablabla"
                                            }
                           },
                           new NewsItem
                           {
                               ImageUri = String.Empty,
                               Paragraphs = new[]
                                            {
                                                "blablabla",
                                                "blablabla",
                                                "blablabla"
                                            }
                           }
                       };
于 2013-07-13T20:28:20.643 に答える