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

本文关键字:数据 上下文 另一个 自定义控件 访问 | 更新日期: 2023-09-27 18:03:59

Stackoverflowers你好,

在一个。xaml文件中,我已经为关联的ViewModel设置了一个数据上下文。

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

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

我想设置交互。触发器,但我希望命令在xml文件开头定义的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在数据上下文类型的对象"。

如何解决?

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

这里缺少Mode=FindAncestor

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