绑定到x:static属性时出现XamlParseException

时间:2017-05-04 07:53:00

标签: c# wpf data-binding

我在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”。

1 个答案:

答案 0 :(得分:1)

从WPF 4.5开始,您使用以下语法绑定到静态属性:

Margin="{Binding Path=(local:MenuVM.getMenuCatalogItemMargin)}"

在4.5之前,你会使用

Margin="{Binding Source={x:Static local:MenuVM.getMenuCatalogItemMargin}}"