【发布时间】:2022-01-18 12:18:12
【问题描述】:
在更新我的软件时,我开始遇到这个BindingExpression 错误。
System.Windows.Data 错误:40:BindingExpression 路径错误:在“对象”“MainViewModel”(HashCode=4781813)上找不到“SystemParameters”属性。 BindingExpression:Path=SystemParameters.PrimaryScreenHeight; DataItem='MainViewModel' (HashCode=4781813);目标元素是'MainWindow'(名称='XXX');目标属性是“高度”(类型“双”)
System.Windows.Data 错误:40:BindingExpression 路径错误:在“对象”“MainViewModel”(HashCode=4781813)上找不到“SystemParameters”属性。 BindingExpression:Path=SystemParameters.PrimaryScreenWidth; DataItem='MainViewModel' (HashCode=4781813);目标元素是'MainWindow'(名称='XXX');目标属性是“宽度”(类型“双”)*
看了上面的错误,好像在MainViewModel中找不到SystemParameters对象。
<Window x:Name="XXXX" x:Class="XXXX.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:XXXX"
xmlns:localize="http://gu.se/Localization"
xmlns:properties="clr-namespace:XXXX.Properties"
mc:Ignorable="d"
d:DesignHeight="1080" d:DesignWidth="1920"
Title=""
WindowStyle="None"
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen" WindowState="{Binding WindowState, Mode=TwoWay}"
DataContext="{Binding Main, Source ={StaticResource Locator}}"
Height="{Binding SystemParameters.PrimaryScreenHeight}"
Width="{Binding SystemParameters.PrimaryScreenWidth}" Background="#FFCCCCCC">
<Window.Resources>
当我启动我的应用程序时,Initializer.cs 类被调用,该类初始化所有参数并创建MainWindow 的实例。通过调试,我发现我调用window.Show()方法时似乎出现了这个问题,然后我的应用程序立即崩溃了。
MainWindow window = new MainWindow();
window.Show();
【问题讨论】:
-
MainViewModel 中显然没有公开的 SystemParameters 属性。
-
你可能想写
{x:Static SystemParameters.PrimaryScreenWidth}而不是{Binding SystemParameters.PrimaryScreenWidth}。 -
@Clemens 添加 x:static 现在显示不同的错误“Windows Presentation Foundation (WPF) 项目不支持静态”。
-
@amrit2 区分大小写很重要,
x:Static与x:static不同(错误)。除此之外,Visual Studio 可能存在问题,请参阅相关问题 here。尝试卸载并重新加载项目。
标签: c# .net wpf xaml data-binding