WP7 / Silverlight超链接图像

时间:2010-11-16 17:24:17

标签: silverlight image windows-phone-7 hyperlink

我是Silverlight和WP7的新手。我一直在尝试使用HyperlinkBut​​ton热链接图像并将其内容设置为图像。但是,这只会使我的图像消失。

重现:

  1. 创建一个新的Windows Phone Panorama应用程序。
  2. 在MainPage.xaml上,将Rectangle替换为Image,将源设置为ApplicationIcon.png。
  3. 然后,用HyperlinkBut​​ton包围它。
<HyperlinkButton NavigateUri="http://www.bing.com" TargetName="_blank">
   <Image Source="ApplicationIcon.png"/>
</HyperlinkButton>

我尝试过很多属性,对我来说没什么用。这两个项目都是相互依赖的。在WP7中这可能吗?它是一个外部URI。我搜索了文档,发现没有任何帮助。

感谢您的意见和建议。

3 个答案:

答案 0 :(得分:6)

这有点奇怪,因为你无法直接将Image作为控件的内容放置。在测试期间,我们探讨了这个主题here

Peter Torr之前建议使用stackpanel作为超链接的内容。这在当时确实有效,但由于某种原因目前似乎没有起作用。

据说,Richard Woo确定了一项工作,即使用超链接后台属性。我确认这仍然如下:

    <HyperlinkButton Height="310" HorizontalAlignment="Left" Margin="206,202,0,0" Name="hyperlinkButton1" VerticalAlignment="Top" Width="200" >
        <HyperlinkButton.Background>
            <ImageBrush ImageSource="SplashScreenImage.jpg"/>
        </HyperlinkButton.Background>
    </HyperlinkButton>

作为一个需要在建议论坛或连接上查看的问题,可能值得提出这个问题。

就超链接的替代方案而言,Matt的图像和手势选项看起来可行。您也可以使用Button并在Blend中重新设置它的外观。

答案 1 :(得分:5)

看起来你正试图在点击时让图片启动网页。

启动网页的唯一方法是使用WebBrowserTask。如果我是你,我会在GestureListener(from the toolkit)中包装一个图像并在点击事件上启动任务。

像这样:

XAML:

    <Image Source="images/appbar.favs.addto.rest.png" Stretch="None" >
        <Controls:GestureService.GestureListener>
            <Controls:GestureListener Tap="GestureListener_Tap" />
        </Controls:GestureService.GestureListener>
    </Image>

CS:

    private void GestureListener_Tap(object sender, GestureEventArgs e)
    {
        var wbt = new WebBrowserTask();
        wbt.URL = "http://www.stackoverflow.com/";
        wbt.Show();
    }

答案 2 :(得分:0)

您需要更改HyperlinkButton样式才能启用其中的任何内容,而不仅仅是文字。这是一个样本样式:

<Style x:Key="BrowserHyperlinkButtonStyle" TargetType="HyperlinkButton">
    <Setter Property="Foreground" Value="{StaticResource PhoneAccentBrush}" />
    <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}" />
    <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeNormal}" />
    <Setter Property="FontWeight" Value="Normal" />
    <Setter Property="Background" Value="{StaticResource TransparentBrush}" />
    <Setter Property="BorderBrush" Value="{x:Null}" />
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="HorizontalContentAlignment" Value="Left" />
    <Setter Property="VerticalContentAlignment" Value="Top" />
    <Setter Property="Padding" Value="{StaticResource PhoneTouchTargetOverhang}" />
    <Setter Property="TargetName" Value="_blank" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="HyperlinkButton">
                <Grid>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal" />
                            <VisualState x:Name="MouseOver" />
                            <VisualState x:Name="Pressed">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentElement"
                                                                   Storyboard.TargetProperty="Foreground">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{StaticResource PhoneSubtleBrush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Disabled">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentElement"
                                                                   Storyboard.TargetProperty="Foreground">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{StaticResource PhoneDisabledBrush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="FocusStates">
                            <VisualState x:Name="Focused" />
                            <VisualState x:Name="Unfocused" />
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <ContentControl Name="ContentElement"
                                        Content="{TemplateBinding Content}"
                                        ContentTemplate="{TemplateBinding ContentTemplate}"
                                        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                        Margin="{TemplateBinding Padding}" />
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>