在悬停时显示边框控件

时间:2014-09-21 14:53:06

标签: xaml windows-8 microsoft-metro

我有一个Border控件,它拥有一个Image控件。基本上我想显示边框控件,如果图像控件是悬停的。 类似于css的东西:悬停效果。

最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

所以有很多方法可以实现这一点,这完全取决于你的设置。

  • 仅针对一个孤立的图像,或者您是否希望能够在其他地方重复使用此功能?
  • 您的图片是DataTemplate内的ListView还是其他一些项控件?
  • 通过编写代码隐藏来实现这一点,或者最好是仅限XAML的解决方案,你会没事吗? (希望是后者。)

如果只有一张图片,您可以处理图片控件上的PointerEnteredPointerExited事件,将边框的BorderBrush颜色设置为黄色(例如)和透明的。既然你说你是XAML的新手,那么这是唯一最简单的"我能提供的解决方案。也许别人可以提出其他简单的替代方案。不幸的是,没有":悬停"类似的样式开箱即用。你必须自己编写这个功能。


我首选的解决方案是将此功能捆绑到某种可重用的组件中。想到的一些解决方案:

  1. 使用必要的代码隐藏创建UserControl BorderImage,以处理指针进入和退出事件。
  2. 创建一个新的模板化ContentControl,允许您在UIElement内设置任意Border。这也允许您使用TemplateBinding来设置模板外部的BorderBrush等内容。
  3. 创建一个Behavior(Blend SDK),可以附加到包含必要逻辑的Border
  4. 关于Blend SDK的主题,如果您使用VisualState并混合EventTriggerBehavior和{{1},则无需代码隐藏即可实现解决方案1和解决方案2 }处理GoToStateActionPointerEntered事件中不断变化的视觉状态。