我認爲這是對如何管理依賴項屬性的一個基本誤解,但我似乎無法找到一個明確的例子來糾正我。DependencyProperty值和更改回調的內部管理
望着下面的代碼爲例...
public class MyControl
{
public static readonly DependencyProperty ExpressionProperty =
DependencyProperty.Register("Expression",
typeof (Expression),
typeof (MyControl),
new PropertyMetadata(ExpressionChanged));
public Expression Expression
{
get { return (Expression)GetValue(ExpressionProperty); }
set { SetValue(ExpressionProperty, value); }
}
private static void ExpressionChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
... Must respond to external change of property
... Update UI to reflect external change to property
}
private void RespondToInput()
{
... Do something to expression, add new elements or something
... Now expression has changed so I want to update the dependency property
... so datacontext gets new value.
SetValue(ExpressionProperty, updatedExpression);
}
}
我不明白的是,當我做RespondToInput的工作,我想現在更新的DependencyProperty,但如果我這樣做,我調用了PropertyChanged回調函數,此時我走了一圈,現在開始更新UI,即使我已經有效地從UI發起更改。
我不知道這是否足夠有道理。
我做錯了什麼?
謝謝!
也許只是一個錯字。雖然該屬性是在MyControl類中定義的,但您可以將'ownerType'參數設置爲DependencyProperty.Register到'ExpressionRichTextBox'。 – Clemens
對不起,錯字!修正了謝謝! – Adam