FrameworkElement.DataContextChanged 事件

定義

發生于 FrameworkElement.DataCoNtext 屬性的值變更時。

// Register
event_token DataContextChanged(TypedEventHandler<FrameworkElement, DataContextChangedEventArgs const&> const& handler) const;

// Revoke with event_token
void DataContextChanged(event_token const* cookie) const;

// Revoke with event_revoker
FrameworkElement::DataContextChanged_revoker DataContextChanged(auto_revoke_t, TypedEventHandler<FrameworkElement, DataContextChangedEventArgs const&> const& handler) const;
public event TypedEventHandler<FrameworkElement,DataContextChangedEventArgs> DataContextChanged;
function onDataContextChanged(eventArgs) { /* Your code */ }
frameworkElement.addEventListener("datacontextchanged", onDataContextChanged);
frameworkElement.removeEventListener("datacontextchanged", onDataContextChanged);
- or -
frameworkElement.ondatacontextchanged = onDataContextChanged;
Public Custom Event DataContextChanged As TypedEventHandler(Of FrameworkElement, DataContextChangedEventArgs) 
<frameworkElement DataContextChanged="eventhandler"/>

事件類型

備註

FrameworkElement.DataCoNtext屬性具有內建行為,其中其值會繼承至設定DataCoNtext值之FrameworkElement 的所有 FrameworkElement子項目。 此行為可讓一組相關元素使用相同的內容來系結至不同的來源屬性,這對專案範本、資料範本和其他資料系結案例特別有用。 因為 DataCoNtext 繼承,所以每個 FrameworkElement 都可能會使用繼承的值來引發另一個衍生自繼承元素的 DataCoNtextChanged 事件,而不是父元素,一旦元素偵測到其繼承 的 DataCoNtext 值已變更。 如果您不想要此行為,您應該在父來源上處理 DataCoNtextChanged 事件,其中會先引發事件。 在處理常式邏輯中,將DataCoNtextChangedEventArgs事件資料中的Handled屬性值設定為true。 該動作會防止事件路由傳送至子項目。

注意

DataCoNtextChanged 具有路由行為,但不是真正的路由事件, (它沒有 RoutedEvent 識別碼) 。 此外,它會從父系路由至子系,而真正的路由事件則會從子系路由至父系。 如果您熟悉WINDOWS PRESENTATION FOUNDATION (WPF) ,DataCoNtextChanged 可能會被視為Windows Presentation Foundation (WPF) 事件路由定義的通道路由事件。

DataCoNtextChanged 適用于控制項邏輯或其他程式碼型邏輯想要通知系結的資料內容已變更的案例,這通常表示資料系結值會變更。 這可作為執行程式碼的觸發程式,讓內容驅動變更,然後現有系結可以使用新內容來重新計算值。 這也適用于您不想在資料範本中預先存在的宣告系結,但需要變更的通知的情況。 在此案例中,您可以處理 DataCoNtextChanged 來偵測資料內容的變更,並在回應中直接變更程式碼中的其他屬性,就像 XAML 宣告的系結透過資料系結引擎動態執行一樣。 例如,您可能有主要用於資料範本內的自訂控制項,而且您希望控制項能夠在應用程式 UI XAML 或資料範本中執行系結作業,而不需要任何明確的 Binding 宣告。

適用於

另請參閱