我需要通過在Windows Phone 8的綁定表達式來設置一個RichTextBox用戶控制的XAML屬性,我發現,這是不是一個DP,所以我決定從RichTextBox繼承並添加一個DP,它將使用PropertyChanged事件更改Xaml屬性,無論如何代碼看起來像這樣,剝離出不相關的部分。綁定的自定義依賴屬性獲取數據綁定到字符串不能轉換例外
public class RichTextBoxWithBindableXaml : RichTextBox
{
public string BindableXaml
{
get { return (string)GetValue(BindableXamlProperty); }
set { SetValue(BindableXamlProperty, value); }
}
public static readonly DependencyProperty BindableXamlProperty =
DependencyProperty.Register("BindableXaml",
typeof(string),
typeof(RichTextBoxWithBindableXaml),
new PropertyMetadata(0));
}
//xaml code
<local:RichTextBoxWithBindableXaml BindableXaml="{Binding PageContent , Mode=OneWay}"> </local:RichTextBoxWithBindableXaml>
而且我得到以下異常可怕的消息: 對象類型「System.Windows.Data.Binding」不能轉換爲類型「System.String」。
我已經檢查到這些異常和數據綁定,並通過右側的建議類似的問題仍在繼續,仍然不明白爲什麼一件簡單的事情不會對我的工作類似問題的許多解決方案。上面列出的代碼只是具有綁定表達式的DP的最簡單實現。順便說一句,源PageContent來自INotifyPropertyChanged對象,它的工作原理,我知道,因爲它可以綁定到TextBlock的Text屬性。
我失去了一些東西如此明顯?我不想爲這樣簡單的事情發表問題,但我似乎無法以任何方式解決問題。
編輯: 繼P.S音符竟然是完全不相干的。
P.S.我最後的疑問是xmlns命名空間local加載的方式。它被加載爲clr程序集,xaml解析器可能認爲我的自定義繼承類爲clr-only,並且由於clr屬性不是依賴項屬性而引起混淆。希望它聽起來不笨,我絕望。這是因爲這樣:
xmlns:local="clr-namespace:RumCli"
有關詳細說明,請查看下面的OmegaMan答案。 – bahti