WPF 绑定在运行时不起作用
WPF binding at runtime not working
将 .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>
在设计模式下,我可以右键单击 "Image" 并转到我的 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" 中的 属性 或者什么?我可以像这样强制绑定到后面的视图代码:
{Binding Path=Image, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}
它也可以在运行时工作,但我想要我的 ViewModel 中的 属性。
我误会了什么?
问题似乎是缺少 DataContext 的继承(但仅在运行时)。解释的解决方案 here 解决了我的问题。
将 .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>
在设计模式下,我可以右键单击 "Image" 并转到我的 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" 中的 属性 或者什么?我可以像这样强制绑定到后面的视图代码:
{Binding Path=Image, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}
它也可以在运行时工作,但我想要我的 ViewModel 中的 属性。
我误会了什么?
问题似乎是缺少 DataContext 的继承(但仅在运行时)。解释的解决方案 here 解决了我的问题。