我的目标是让整个顶层StackPanel(或其他一些元素)使用正在返回的XML数据中的Url
值打开一个网站。我想知道实现这个目标的最佳途径是什么?
以下是我的XAML代码示例:
<DataTemplate>
<StackPanel> //bind Url here somehow
<Image Source="{Binding Thumbnail}"></Image>
<StackPanel>
<TextBlock Text="{Binding Title}" TextWrapping="Wrap"/>
<StackPanel>
<TextBlock Text="{Binding Duration}"></TextBlock>
<TextBlock Text="{Binding Stats}"></TextBlock>
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
以下是我的代码后面返回的值的示例:
public class XmlData
{
public string Id { get; set; }
public string Title { get; set; }
public string Url { get; set; }
public string Thumbnail { get; set; }
public string Stats { get; set; }
public double Duration { get; set; }
}
代码示例表示赞赏。提前谢谢。
答案 0 :(得分:1)
堆叠面板无法自行打开网址,您需要WebBrowser控件。
<DataTemplate>
<StackPanel>
<WebBrowser Source="{Binding Url}" />
<Image Source="{Binding Thumbnail}"></Image>
<StackPanel>
<TextBlock Text="{Binding Title}" TextWrapping="Wrap"/>
<StackPanel>
<TextBlock Text="{Binding Duration}"></TextBlock>
<TextBlock Text="{Binding Stats}"></TextBlock>
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
答案 1 :(得分:1)
的Xaml:
<DataTemplate>
<StackPanel MouseLeftButtonDown="StackPanelMouseLeftButtonDown" Tag="{Binding Url}">
<Image Source="{Binding Thumbnail}"></Image>
<StackPanel>
<TextBlock Text="{Binding Title}" TextWrapping="Wrap"/>
<StackPanel>
<TextBlock Text="{Binding Duration}"></TextBlock>
<TextBlock Text="{Binding Stats}"></TextBlock>
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
代码背后的代码:
private void StackPanelMouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
var realSender = (StackPanel)sender;
WebBrowserTask wbt = new WebBrowserTask();
wbt.URL = (string)realSender.Tag;
wbt.Show();
}