WPF - Caliburn Micro Event触发器,带控制参数

时间:2013-10-01 10:25:40

标签: c# wpf xaml caliburn.micro caliburn

我有一个名为ZoomSlider的控件,我希望在我的EventTrigger中通过Caliburn.Micro Message.Attach功能调用这样的控件:

cal:Message.Attach="[Event PreviewMouseLeftButtonDown] = [Action ToggleNew($this, $ZoomSlider)]"

原因是我希望在我的UserControl事件被引发时对我的ToggleNew (在这种情况下,将其滑开)采取行动,但它是无法从ViewModel引用我的视图中的控件。

如何从上面的代码中引用ZoomSlider控件?我的第一个参数$this完美无缺,但UserControl无法使用{。}}。

1 个答案:

答案 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文档,了解有关操作和操作消息的所有内容。