Windows Phone 7 находит URL в строке из Twitter API и делает его кликабельным - PullRequest
1 голос
/ 08 сентября 2011

Попытка найти самый сексуальный способ получить «твит» из Twitter API и найти любые URL-адреса, которые могут в нем существовать, а затем сделать эти ссылки «кликабельными» внутри отображаемого твита. Мы думали сделать это точно так же, как это делает официальное приложение для твиттера, когда вы нажимаете на твит и переходите на страницу, на которой подробно описан этот конкретный твит, а URL-адрес внутри твита выделен жирным, синим цветом и кликабелен ....

пример данных, с которыми я работаю ...

https://dev.twitter.com/docs/api/1/get/statuses/show/%3Aid

Не уверен, стоит ли мне брать возвращаемую строку и анализировать ее, чтобы найти что-то, начинающееся с "http:" или "https:", или мне следует перебирать массив URL-адресов, который возвращается в объект твита из твиттера (в этом случае мне нужно было бы найти ту же строку в строке сообщения и в любом случае изменить ее на ссылку) ...

Кроме того, какой элемент управления я должен использовать для ссылки, я должен программно вставить кнопку в текстовый блок? Есть ли способ сделать часть текстового блока интерактивной?

Я знаю, что есть элегантное и простое решение, которое мне не хватает. Мой макет ниже:

    <Grid x:Name="LayoutRoot">
    <Grid.Background>
        <ImageBrush ImageSource="pageBackground.png"/>
    </Grid.Background>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
        <StackPanel Orientation="Horizontal" Margin="12,0,0,0">
            <Image Source="{Binding profile_image_url}" Height="83" Width="83" VerticalAlignment="Top" />
            <StackPanel Width="371">
                <TextBlock Text="{Binding name}" TextWrapping="Wrap" Foreground="#066d96" Style="{StaticResource PhoneTextTitle2Style}"/>
                <TextBlock Text="{Binding screen_name}" TextWrapping="Wrap" Foreground="#066d96" Style="{StaticResource PhoneTextTitle2Style}"/>

            </StackPanel>
        </StackPanel>
    </StackPanel>

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

        <StackPanel>

            <TextBlock Text="{Binding text}" Name="tbText" Foreground="#211F20" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" />
            <TextBlock Text="{Binding age}" TextWrapping="Wrap" Foreground="#fabb69" Style="{StaticResource PhoneTextSubtleStyle}" Padding="0 10 0 0"/>

        </StackPanel>

    </Grid>


</Grid>

1 Ответ

1 голос
/ 09 сентября 2011

Я не могу отвечать за части, не относящиеся к Twitter, но если вы установите для параметра include_entities в Twitter значение true, t или 1 (как подробно описано на странице документации, на которую вы ссылались), вы получите предварительно проанализированное представление твита обратно.

Если вы посмотрите на пример в документации, entities - это объект, содержащий массив urls. Каждый объект в массиве urls является URL-адресом. Массив indices в объекте URL содержит начальный и конечный индекс URL в тексте твита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...