一千萬個為什麽

搜索

ag_e_parser_bad_property_value Silverlight綁定頁面標題


XAML:


C#

public TablePage()
{
    this.DataContext = new Table() 
    { 
        Name = "Finding Table"
    };
    InitializeComponent();
}

在標題綁定發生的位置在InitializeComponent中獲取ag_e_parser_bad_property_value錯誤。我嘗試添加靜態文本,工作正常。如果我在其他地方使用綁定,例如:


這也不起作用。

我猜它是抱怨的,因為沒有設置DataContext對象,但如果我在InitializeComponent之前放入一個斷點,我可以確認它已填充並且設置了Name屬性。

有任何想法嗎?

最佳答案

您只能對 DependencyProperty 支持的屬性使用數據綁定。例如,如果您查看 TextBlock 的文檔,您會發現 Text 屬性具有匹配的 TextProperty 類型的公共靜態字段<�代碼>的DependencyProperty </代碼>。

如果查看 Page 的文檔,您會發現沒有定義 TitleProperty ,因此 Title 屬性不是依賴屬性。

修改

沒有辦法“覆蓋”這個,但你可以創建一個附加屬性: -

public static class Helper
{
    #region public attached string Title
    public static string GetTitle(Page element)
    {
        if (element == null)
        {
            throw new ArgumentNullException("element");
        }
        return element.GetValue(TitleProperty) as string;
    }

    public static void SetTitle(Page element, string value)
    {
        if (element == null)
        {
            throw new ArgumentNullException("element");
        }
        element.SetValue(TitleProperty, value);
    }

    public static readonly DependencyProperty TitleProperty =
            DependencyProperty.RegisterAttached(
                    "Title",
                    typeof(string),
                    typeof(Helper),
                    new PropertyMetadata(null, OnTitlePropertyChanged));

    private static void OnTitlePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        Page source = d as Page;
        source.Title = e.NewValue as string;
    }
    #endregion public attached string Title

}

現在您的頁面xaml可能看起來有點像: -


轉載註明原文: ag_e_parser_bad_property_value Silverlight綁定頁面標題

猜你喜歡