WPF绑定在运行时不起作用

时间:2018-05-05 18:48:03

标签: wpf data-binding mahapps.metro

将.NET 4.7.1 WPF与MahApps 1.6.1.4一起使用。我正在绑定HamburgerMenuIconItem.Icon:

<controls:HamburgerMenuIconItem.Icon>
<Ellipse">
    <Ellipse.Fill>
        <ImageBrush ImageSource="{Binding Image}" />
    </Ellipse.Fill>
</Ellipse>
</controls:HamburgerMenuIconItem.Icon>

在设计模式下,我可以右键单击“图像”,然后转到我的ViewModel中属性UserControl.DataContext的属性。正如所料。

但是在运行时,这会失败并出现此错误:

System.Windows.Data Error: 40 : BindingExpression path error: 'Image' property not found on 'object' ''HamburgerMenuIconItem' (HashCode=44346036)'. BindingExpression:Path=Image; DataItem='HamburgerMenuIconItem' (HashCode=44346036); target element is 'ImageBrush' (HashCode=21345065); target property is 'ImageSource' (type 'ImageSource')

所以在运行时它试图绑定到“HamburgerMenuIconItem”中的属性或者什么?我可以强制绑定到后面的View代码:

{Binding Path=Image, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}

这也适用于运行时,但我喜欢ViewModel中的属性。

我误解了什么?

1 个答案:

答案 0 :(得分:0)

似乎问题是缺少DataContext的继承(但仅限于运行时)。解决方案here解决了我的问题。