绑定StackPanel

时间:2012-01-20 20:03:44

标签: c# windows-phone-7

我的目标是让整个顶层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; }
    }

代码示例表示赞赏。提前谢谢。

2 个答案:

答案 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(); 
}