BindingExpression path error: 'SystemParameters'
BindingExpression path error: 'SystemParameters'
更新我的软件时,我开始遇到这个 BindingExpression
错误。
System.Windows.Data Error: 40 : BindingExpression path error: 'SystemParameters' property not found on 'object' ''MainViewModel' (HashCode=4781813)'. BindingExpression:Path=SystemParameters.PrimaryScreenHeight; DataItem='MainViewModel' (HashCode=4781813); target element is 'MainWindow' (Name='XXX'); target property is 'Height' (type 'Double')
System.Windows.Data Error: 40 : BindingExpression path error: 'SystemParameters' property not found on 'object' ''MainViewModel' (HashCode=4781813)'. BindingExpression:Path=SystemParameters.PrimaryScreenWidth; DataItem='MainViewModel' (HashCode=4781813); target element is 'MainWindow' (Name='XXX'); target property is 'Width' (type 'Double')*
看了上面的错误,好像是在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
class 来初始化所有参数并创建 MainWindow
的实例。通过调试,我发现这个问题似乎是在我调用window.Show()
方法时出现的,然后我的应用程序立即崩溃了。
MainWindow window = new MainWindow();
window.Show();
A Binding
将默认使用元素的 DataContext
解析 属性 路径(这是继承的)。 PrimaryScreenHeight
and PrimaryScreenWidth
properties are static
and part of the type SystemParameters
是 static
类型,它不是数据上下文的一部分。要解决此问题,您可以:
使用 x:Static
标记扩展来引用静态属性。
Implements a markup extension that returns static field and property references.
Height="{x:Static SystemParameters.PrimaryScreenHeight}"
Width="{x:Static SystemParameters.PrimaryScreenWidth}"
如果需要应用值转换器,可以使用 Source
.
的 x:Static
标记扩展
Height="{Binding Source={x:Static SystemParameters.PrimaryScreenHeight}, Converter={StaticResource MyConverter}}"
Width="{Binding Source={x:Static SystemParameters.PrimaryScreenWidth}, Converter={StaticResource MyConverter}}"
更新我的软件时,我开始遇到这个 BindingExpression
错误。
System.Windows.Data Error: 40 : BindingExpression path error: 'SystemParameters' property not found on 'object' ''MainViewModel' (HashCode=4781813)'. BindingExpression:Path=SystemParameters.PrimaryScreenHeight; DataItem='MainViewModel' (HashCode=4781813); target element is 'MainWindow' (Name='XXX'); target property is 'Height' (type 'Double')
System.Windows.Data Error: 40 : BindingExpression path error: 'SystemParameters' property not found on 'object' ''MainViewModel' (HashCode=4781813)'. BindingExpression:Path=SystemParameters.PrimaryScreenWidth; DataItem='MainViewModel' (HashCode=4781813); target element is 'MainWindow' (Name='XXX'); target property is 'Width' (type 'Double')*
看了上面的错误,好像是在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
class 来初始化所有参数并创建 MainWindow
的实例。通过调试,我发现这个问题似乎是在我调用window.Show()
方法时出现的,然后我的应用程序立即崩溃了。
MainWindow window = new MainWindow();
window.Show();
A Binding
将默认使用元素的 DataContext
解析 属性 路径(这是继承的)。 PrimaryScreenHeight
and PrimaryScreenWidth
properties are static
and part of the type SystemParameters
是 static
类型,它不是数据上下文的一部分。要解决此问题,您可以:
使用
x:Static
标记扩展来引用静态属性。Implements a markup extension that returns static field and property references.
Height="{x:Static SystemParameters.PrimaryScreenHeight}" Width="{x:Static SystemParameters.PrimaryScreenWidth}"
如果需要应用值转换器,可以使用
的Source
.x:Static
标记扩展Height="{Binding Source={x:Static SystemParameters.PrimaryScreenHeight}, Converter={StaticResource MyConverter}}" Width="{Binding Source={x:Static SystemParameters.PrimaryScreenWidth}, Converter={StaticResource MyConverter}}"