2012-01-20 4 views
0

내 목표는 반환되는 XML 데이터에서 Url 값을 사용하여 전체 StackPanel (또는 다른 요소)에서 웹 사이트를 열도록하는 것입니다. 나는 이것을 달성하는 가장 좋은 방법이 무엇인지 궁금 해서요?바인딩 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

감사합니다. 미안 내 질문에 오해의 소지가 있지만 내 웹 브라우저에서 내 응용 프로그램의 URL을 열고 싶지 않아요. 상단 StackPanel의 아무 곳이나 클릭하고 Windows Phone IE 브라우저를 외부 웹 사이트로 열어 줄 수 있기를 원합니다. – crazymatt