2017-05-04 57 views
0

我在MenuVM.cs靜態類下面的靜態屬性:XamlParseException結合斧頭時:靜態屬性

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

的RelativeSource沒有意義的靜態屬性,路徑語法錯誤。注意,'getMenuCatalogItemMargin'是屬性的錯誤名稱。它應該是'MenuCatalogItemMargin'。 – Clemens

回答

1

由於WPF 4.5綁定到一個靜態屬性的語法如下:

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

之前4.5,你會使用

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

謝謝你教育我 – user1337604