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
,但我们不能使用RelativeSource
或ElementName
来设置绑定源,因为Storyboard
(或Timeline)不是FrameworkElement(或FrameworkContentElement)。 指定源的唯一方法是设置Source
属性。 但是我们通常可以将它设置为StaticResource
或DynamicResource
或直接(使用元素语法)。 幸运的是,在.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