2016-08-25 121 views
0

你好Stackoverflowers,访问自定义控制

在的.xaml文件的另一个数据上下文,我已成立一个DataContext到相关视图模型。

d:DataContext="{d:DesignInstance Contents:OverlayDesignerViewModel}"> 

在文件的后面,我想使用一个从System.Windows.Controls.Canvas继承的类。

我想在此控件中设置Interaction.Triggers,但我希望命令位于在XAML文件开始时定义的DataContext中。

<Contents:DrawingCanvasCustom 
       Background="#00000000" 
       Name="_drawingCanvas" 
       Width="650" 
       Height="450"> 

     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="CanvasMouseDown"> 
       <i:InvokeCommandAction Command="{Binding Path=DataContext.CanvasMouseDownCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" 
            CommandParameter="{Binding ElementName=CanvasOverlayView}"/> 
      </i:EventTrigger> 

但是我有一个错误:“can not rsolve属性CanvasMouseDownCommand在类型对象的数据上下文中”。

如何解决这个问题?

回答

0

你在这里失踪Mode=FindAncestor

Command="{Binding Path=DataContext.CanvasMouseDownCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" 
+0

试了几次后,我想通了,{结合CanvasMouseDownCommand}足以在我的情况。感谢您的快速启发。 – Csi