2012-01-20 55 views
0

我的目标是让整个顶部StackPanel(或其他元素)使用返回的XML数据中的Url值打开一个网站。我想知道什么才是实现这个目标的最好方法?绑定StackPanel

这里是我的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; } 
    } 

代码示例理解。提前致谢。

回答

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(); 
} 
+0

感谢您的回复。此代码对我无效。当我点击StackPanel时,会出现错误。有没有可能缺少的东西? – crazymatt

+0

你应该告诉我们你得到的错误。 – mostruash

+0

@crazymatt给出的代码是正确的并且有效。我建议你运行几个WP7/Silverlight教程,然后再试一次, – ColinE

1

堆栈面板本身无法打开URL,因此您需要为此控制一个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> 
+0

感谢响应。很抱歉,如果我的问题具有误导性,但我不想在我的应用中的网络浏览器中打开该网址。我希望能够点击那个顶层StackPanel中的任何地方,并让它从外部打开Windows Phone IE浏览器到相应的网站。 – crazymatt

相关问题