我正在构建一个用于娱乐/学习等的Windows 8 metro应用程序 我已经创建了包含描述,图像等的文本项的列表视图。在描述中,通常有我想要点击的超链接。
但是,绑定到文本块时,xaml超链接代码显示为文本。搜索arround,看起来我需要使用richtextblock来进行超链接。我似乎无法弄清楚如何绑定到它的超链接。我在wpf中找到了许多示例,展示了如何使用flowdocument扩展richtextblock。 Flowdocument在框架的当前消费者预览版本中不存在。
我正在联系,看看是否有人解决了这个问题,或者对于要走哪条道路有任何建议。
编辑: 我目前的代码
现在我只是将“状态对象”中的“文本”字段绑定到“文本”上的文本块绑定
我在文本字段中有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);
}
答案 0 :(得分:3)
Microsoft删除了对Metro XAML内联超链接的支持。您仍然可以使用HyperlinkButton作为非内联超链接,或者如果您的内联超链接短(1-2个单词),那么您可以将HyperlinkButton放在RichTextBlock中的InlineUIContainer中。以后的解决方案需要一些代码,只需使用绑定就不会这样做。