我在MenuVM.cs静态类中有以下静态属性:
public static Thickness getMenuCatalogItemMargin
{
get { return new Thickness(getMenuItemsWidth * 0.012, getMenuItemsWidth * 0.012, getMenuItemsWidth * 0.012, getMenuItemsWidth * 0.012); }
}
我试图通过以下方式访问XAML中的第29行:
Margin="{Binding Path={x:Static local:MenuVM.getMenuCatalogItemMargin}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
以下错误表明它无法解释我的符号,所以这是使用RelativeSource参数调用静态属性的正确方法吗?
错误:
System.Windows.Markup.XamlParseException:''设置属性'System.Windows.Data.Binding.Path'引发异常。行号'29'和行位置'110'。'
InvalidCastException:无法将类型为“System.Windows.Thickness”的对象强制转换为“System.Windows.PropertyPath”。
答案 0 :(得分:1)
从WPF 4.5开始,您使用以下语法绑定到静态属性:
Margin="{Binding Path=(local:MenuVM.getMenuCatalogItemMargin)}"
在4.5之前,你会使用
Margin="{Binding Source={x:Static local:MenuVM.getMenuCatalogItemMargin}}"