WPF - 卡利本微事件触发器,控件作为参数
本文关键字:控件 参数 触发器 事件 WPF | 更新日期: 2023-09-27 18:33:36
我有一个名为ZoomSlider
的控件,我想通过Caliburn.Micro Message.Attach
功能在我的EventTrigger
中引用它:
cal:Message.Attach="[Event PreviewMouseLeftButtonDown] = [Action ToggleNew($this, $ZoomSlider)]"
原因是,当引发ToggleNew
事件时,我想对我的UserControl
执行操作(在本例中,将其滑动打开),但无法从 ViewModel 引用我的视图中的控件。
如何从上面的代码中引用ZoomSlider
控件?我的第一个参数$this
工作正常,但使用 UserControl
无法具有相同的参数。
假设您的ZoomSlider
控件命名myZoomSlider
如下所示:
<ZoomSlider x:Name="myZoomSlider" />
现在,您可以尝试两种方法将此控件传递给视图模型上的ToogleNew
方法,但首先需要定义方法ToogleNew
以便它将ZoomControl
控件或其任何超类型作为参数,如下所示:
public void ToogleNew(ZoomSlider zoomSlider); // you can also pass any additional parameters if you like to
现在回到我告诉你的两种方法:
尝试按如下所示传递控件:
cal:Message.Attach="[Event PreviewMouseLeftButtonDown] = [Action ToggleNew(myZoomSlider)]"
如果第一个选项不适合您,那么您可以尝试以下操作:
<ZoomSlider x:Name="myZoomSlider" /> <Button Content="Toogle"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <cal:ActionMessage MethodName="ToogleNew"> <cal:Parameter Value="{Binding ElementName=myZoomSlider}" /> </cal:ActionMessage> </i:EventTrigger> </i:Interaction.Triggers> </Button>
您可以查看所有关于操作 wiki 文档,了解有关操作和操作消息的所有内容。