【问题标题】:Wrap An Image With HyperlinkButton In C#在 C# 中使用 HyperlinkBut​​ton 包装图像
【发布时间】:2014-01-29 09:18:46
【问题描述】:

我可以创建一个文本 c# 超链接...

HyperlinkButton sunday_title = new HyperlinkButton();
sunday_title.Content = "Sunday (" + sunday.ToUpper() + ")";
sunday_title.Click += sunday_link_Click;

但是如何创建图形超链接?我小时候的第一个想法是使用这张图片,但这似乎是不可能的。

这是创建图形的c#代码...

Image sunday_image = new Image();
sunday_image.Source = background_flcb;
Border sunday_border = new Border();
sunday_border.Child = sunday_image;

最终,我想将整个grid 设为一个链接(但我认为这是不可能的)。不过,目前我很乐意将图片设为链接。

Similar questions 已解决,但大多数答案都使用 XAML。我想用 c# 来做。

如果有所不同,这适用于 Windows 8 应用程序(尽管同样的逻辑应该适用于 Windows Phone 应用程序)。

【问题讨论】:

    标签: c# windows-8 hyperlink


    【解决方案1】:

    在大多数情况下,XAML 可以轻松转换为 C# 代码。例如,来自上述类似问题链接的这个 XAML 解决方案(简化):

    <HyperlinkButton>
        <HyperlinkButton.Background>
            <ImageBrush ImageSource="SplashScreenImage.jpg"/>
        </HyperlinkButton.Background>
    </HyperlinkButton>
    

    相当于下面的C#代码:

    var hyperlinkButton = new HyperlinkButton();
    hyperlinkButton.Background = new ImageBrush{ImageSource = background_flcb};
    

    Other suggested approach 来自同一个链接,只是使用Image 控件并处理它的 Click/Tap 事件以导航到链接目标:

    Image sunday_image = new Image();
    sunday_image.Source = background_flcb;
    Border sunday_border = new Border();
    sunday_border.Child = sunday_image;
    sunday_image.Tapped += sunday_image_tapped;
    

    无论如何,我不知道这些方法是否也适用于 Windows 8。试一试。祝你好运。

    【讨论】:

    • 你不能在 Windows 8 中使用sunday_image.Click,显然(不在 Visual Studio 提供的列表中。
    • 粘贴new ImageBrush 代码会产生此错误...Cannot implicitly convert type 'System.Uri' to 'Windows.UI.Xaml.Media.ImageSource'
    • 尝试将 new Uri(...) 更改为您在问题中使用的 background_flcb。显然 Win 8 中的 ImageSource 有不同的参数
    • 关于点击事件,谷歌搜索结果建议尝试点击事件而不是在win8中点击图片
    • Tapped 成功了。它允许我在不允许 Click 时运行一个方法。 har07,将您的第二个代码卡盘调整为Tapped 会很好,以供将来参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多