【问题标题】:Accessing another data context in custom control在自定义控件中访问另一个数据上下文
【发布时间】:2016-08-25 09:40:33
【问题描述】:

你好 Stackoverflowers,

在 .xaml 文件中,我已将数据上下文设置为关联的 ViewModel。

  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>

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

如何解决?

【问题讨论】:

    标签: c# wpf xaml datacontext


    【解决方案1】:

    你在这里不见了Mode=FindAncestor

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

    【讨论】:

    • 经过几次尝试,我发现 {Binding CanvasMouseDownCommand} 在我的情况下就足够了。感谢您的快速答复。
    猜你喜欢
    • 2014-08-09
    • 2011-10-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2021-06-19
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多