Привязка гиперссылки к richtextblock в приложении Windows 8 Metro - PullRequest
2 голосов
/ 24 марта 2012

Я создаю приложение Windows 8 Metro для развлечения / обучения и т. Д.
Я создал список элементов текста с описаниями, изображениями и т. Д. Внутри описания часто встречаются гиперссылки, которые я хотел бы сделать активными.

Однако при привязке к текстовому блоку код гиперссылки xaml отображается в виде текста. При поиске вокруг, похоже, мне нужно использовать richtextblock для гиперссылок. Я не могу понять, как привязать к нему гиперссылку. Я нашел много примеров из wpf, показывающих, как расширить richtextblock, используя flowdocument. Flowdocument не существует в текущей предварительной версии фреймворка для потребителей.

Я обращаюсь, чтобы узнать, решил ли кто-нибудь эту проблему или есть какие-либо предложения о том, каким путем идти вниз.

Edit: Код У меня есть В настоящее время

сейчас я просто привязываю поле «текст» из моего объекта «Статусы» к привязке текстового блока к «тексту»

У меня есть URL-адреса в текстовом поле, которые я хочу сделать кликабельными.

В качестве теста я заменял текстовое поле первого объекта разметкой гиперссылки

ех. feed_results [0] .text = "<hyperlink .....

затем пытается привязаться к texblock и richtextblock

Xaml

<ListView x:Name="ItemListView" ItemsSource="{Binding}"  Background="Black" Width="372" VerticalAlignment="Top" Margin="50,0,0,0">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <StackPanel  Orientation="Vertical"  MinHeight="100">
                            <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding user.profile_image_url}" Margin="0,0,15,0" VerticalAlignment="Top" />
                            <StackPanel Orientation="Vertical">
                                    <TextBlock HorizontalAlignment="Left" Foreground="Gray" Text="{Binding user.name}" FontWeight="Bold" TextWrapping="Wrap"  MaxWidth="200" />
                                    <TextBlock HorizontalAlignment="Left" Foreground="Gray"   Text="{Binding text}" TextWrapping="Wrap"  MaxWidth="200" />                      
                                </StackPanel>
                            </StackPanel>
                            <StackPanel  Margin="0,15,0,0" HorizontalAlignment="Right">
                                <TextBlock Text="{Binding created_at,  Converter={StaticResource StringConverter},ConverterParameter=Released: \{0:d\}}"   HorizontalAlignment="Center" Foreground="Gray" />
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>

Код бэкенда

FeedResult<Statuses> r2 = await feed.StatusesAsync(1, 50);

            if (!r2.HasError)
            {
                feed_results = r2.Result;


                Dispatcher.Invoke(Windows.UI.Core.CoreDispatcherPriority.High, new Windows.UI.Core.InvokedHandler((o, a) =>
                {

                    ItemListView1.ItemsSource = feed_results;
                }), this, null);
            }

1 Ответ

3 голосов
/ 27 марта 2012

Microsoft удалила поддержку встроенных гиперссылок из Metro XAML. Вы все еще можете использовать HyperlinkButton для не встроенных гиперссылок или, если ваши встроенные гиперссылки короткие (1-2 слова), вы можете поместить HyperlinkButton внутри InlineUIContainer в RichTextBlock. Более позднее решение потребует некоторого кода, просто использование привязки не сделает этого.

...