我有一个名为ZoomSlider
的控件,我希望在我的EventTrigger
中通过Caliburn.Micro Message.Attach
功能调用这样的控件:
cal:Message.Attach="[Event PreviewMouseLeftButtonDown] = [Action ToggleNew($this, $ZoomSlider)]"
原因是我希望在我的UserControl
事件被引发时对我的ToggleNew
(在这种情况下,将其滑开)采取行动,但它是无法从ViewModel引用我的视图中的控件。
如何从上面的代码中引用ZoomSlider
控件?我的第一个参数$this
完美无缺,但UserControl
无法使用{。}}。
答案 0 :(得分:3)
我们假设您的ZoomSlider
控件名为myZoomSlider
,如下所示:
<ZoomSlider x:Name="myZoomSlider" />
现在,您可以尝试两种方法将此控件传递给视图模型上的ToogleNew
方法,但首先需要定义方法ToogleNew
,以便它需要{{1控制或其任何超类型作为参数,如下所示:
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)]"
您可以查看All about actions wiki文档,了解有关操作和操作消息的所有内容。