在自定义控件中访问另一个数据上下文

时间:2016-08-25 09:40:34

标签: c# wpf xaml datacontext

Hello Stackoverflowers,

在.xaml文件中,我已将datacontext设置为关联的ViewModel。

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

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

我想在此控件中设置Interaction.Triggers,但我希望Command位于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>

但是我有一个错误:“无法在类型对象的数据上下文中查询属性CanvasMouseDownCommand”。

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你在这里遗失Mode=FindAncestor

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