【发布时间】:2012-03-24 12:38:28
【问题描述】:
我正在构建一个 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);
}
【问题讨论】:
-
您能告诉我们您目前拥有的代码吗?
-
在 WPF/Silverlight 中,如果链接足够简单(只有一个文本或图像),我会使用 HyperlinkButton。也许它也可以在地铁上使用? (我手边没有 VS11)。
标签: xaml windows-8 microsoft-metro windows-runtime