【发布时间】:2015-08-11 02:01:58
【问题描述】:
真的很烦人的问题。代码似乎工作正常,但运行时,我看到这个错误被抛出:
System.Windows.Data 错误:40:BindingExpression 路径错误:“IsOpen” 在“对象”“MainViewModel”(HashCode=33664731)上找不到属性。 绑定表达式:路径=IsOpen; DataItem='MainViewModel' (哈希码=33664731);目标元素是'Popup'(名称='LoginPopup'); 目标属性是“IsOpen”(类型“布尔”)
我了解在 MainViewModel 上尝试 LoginPopup 绑定的 IsOpen 属性时存在某种问题,但由于 MainViewModel 中没有 IsOpen 属性而失败。很好,但是我绑定的DataContext不是mainviewmodel,而是LoginPopupViewModel(ViewModelLocator类中的LoginPopup)。 Intellisense 似乎同意我的观点,即事物已绑定到 LoginPopupViewModel,就好像我在 IsOpen 的 Binding 部分中键入其他内容一样,它抱怨“无法解析 LoginPopupViewModel 数据上下文中的属性”,这是应该的。
这是 XAML 代码的一部分:
<Popup x:Name="LoginPopup" PlacementTarget="{Binding ElementName=LoginButton}"
Placement="Bottom"
HorizontalOffset="-40" VerticalOffset="35" StaysOpen="False"
IsOpen=" {Binding IsOpen}"
DataContext="{Binding LoginPopup, Mode=OneWay, Source={StaticResource Locator}}"
Grid.ColumnSpan="3" Grid.Column="0"
Margin="0,0,0.333,0"
Grid.Row="0" Grid.RowSpan="2">
我不是 WPF 的大师,所以我可能遗漏了一些东西,或者这里的语法有问题。任何帮助都会很棒!谢谢!
【问题讨论】: