2012-01-20 6 views
0

私の目標は、戻ってくるXMLデータのUrl値を使って、トップのStackPanel(または他の要素)を開いてWebサイトを開くことです。私はこれを達成するための最善の方法は何だろうと思っていましたか?バインディングStackPanel

ここ
<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; } 
    } 

コード例は感謝ここ

は私のXAMLコードのサンプルです。前もって感謝します。

答えて

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

感謝。申し訳ありませんが私の質問が誤解を招いていたが、私は自分のアプリケーションでWebブラウザでURLを開くしたくない場合。そのトップのStackPanelのどこかをクリックして、Windows Phone IEブラウザを適切なWebサイトに外部に開くようにしたいと考えています。 – crazymatt