我有一個名為 CustomGrid 的類,它派生自 Grid 類。當通過在 Window 類的 TitleProperty 上使用 OverrideMetadata 對網格的父視窗的標題進行更改時,我試圖運行一個方法。然而,盡管我實作了另一個 PropertyChangedCallback 方法,但我解決這個問題的方法似乎不起作用,該方法對網格的 MarginProperty 使用相同的方法(OverrideMetadata):
public class CustomGrid : Grid
{
static CustomGrid()
{
Type ownerType = typeof(CustomGrid);
MarginProperty.OverrideMetadata(ownerType, new FrameworkPropertyMetadata(new PropertyChangedCallback(OnMarginPropertyChanged)));
Window.TitleProperty.OverrideMetadata(ownerType, new FrameworkPropertyMetadata(new PropertyChangedCallback(OnTitlePropertyChanged)));
}
private static void OnMarginPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// This executes when the grid's margin changes.
}
private static void OnTitlePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// This does not execute when the parent window's title changes.
}
}
為什么更改網格的父視窗標題時不執行 OnTitlePropertyChanged 方法?謝謝。
uj5u.com熱心網友回復:
未呼叫回呼方法,因為您沒有在實體上設定Window.Title屬性。CustomGrid
表達方式
Window.TitleProperty.OverrideMetadata(
typeof(CustomGrid),
new FrameworkPropertyMetadata(OnTitlePropertyChanged));
注冊OnTitlePropertyChanged型別的回呼CustomGrid。這意味著只要在 的實體上設定依賴屬性,就會呼叫回呼CustomGrid,但僅限于那些實體,而不是像 MainWindow 這樣的任何物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486026.html
下一篇:淡入新影像同時淡出舊影像WPF
