Csharp/C#教程:WPF事件触发器更改其他UI元素分享


WPF事件触发器更改其他UI元素

我在我的XAML中定义了使用ItemTemplate 。 在ItemTemplate我放置了Image。

       ...              

当鼠标进入图像时,我想在该图像高度我在ItemsPanelTemplate内定义的WrapPanel上开始故事板。

当鼠标进入此图像时,我得到以下exception:“’itmTempPanel’名称在’System.Windows.Controls.Image’的名称范围内找不到。”

如何从开始故事板的元素更改其他元素属性。

谢谢您的帮助 !!

有两种方法可以解决这个问题。 第一个是在.NET 4.0 for WPF中使用{x:Reference}一个function。 如果您的应用程序面向.NET 4.0,则应遵循此方法。 我们的想法是将Storyboard.Target设置为您想要设置动画的对象(在本例中为WrapPanel )。 虽然我们可以在Storyboard.Target使用Binding ,但我们不能使用RelativeSourceElementName来设置绑定源,因为Storyboard (或Timeline)不是FrameworkElement(或FrameworkContentElement)。 指定源的唯一方法是设置Source属性。 但是我们通常可以将它设置为StaticResourceDynamicResource或直接(使用元素语法)。 幸运的是,在.NET 4.0中引入了{x:Reference} ,这可以帮助您引用XAML中的任何命名对象(它的工作方式与ElementName )。 以下是第一种方法的代码:

  

第二种方法基于DataTrigger 。 但是这个触发器不适用于Image ,它完全适用于WrapPanel 。 但现在ElementName可用于将Trigger源绑定到Image 。 因此,当不支持{x:Reference}时,此方法可用。

                 

请注意,您必须为Image指定名称(例如image )。 WrapPanel的被删除。 我们使用DataTrigger监听IsMouseOver属性,而不是使用EventTrigger 。 您还可以指定DataTrigger.ExitActions以在IsMouseOver为false(等于MouseLeave )时开始动画。

上述就是C#学习教程:WPF事件触发器更改其他UI元素分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/988792.html

(0)
上一篇 2021年12月24日
下一篇 2021年12月24日

精彩推荐