2011-07-14 127 views
2

我有一個派生自userControl的自定義類,它描述了「服務窗口」應具有的功能。它還應該描述這個「服務窗口」的實例應該如何顯示。 我有一個叫做serviceStyle的風格。現在,無論何時創建服務窗口的新實例,我都必須在實例的XAML中手動設置樣式,如果可能,我希望避免必須通過將服務窗口的所有子窗口強制爲serviceStyle的樣式來執行此操作。然後,我希望能夠在serviceStyle中的textBlock上做淡入淡出的動畫。現在,因爲這是「服務窗口」的孩子的風格,似乎無法訪問...改變父類的風格

在此期間,我找到了一種方法來設置爲所有服務窗口的默認樣式的風格,這可以完成通過在構造函數中添加此行: DefaultStyleKeyProperty.OverrideMetadata(typeof(NetcarityService),new FrameworkPropertyMetadata(typeof(NetcarityService)));

現在我需要能夠從源頭上在ServiceWindowStyle的XAML元素文本塊得到....提前

感謝。

回答

0

爲了創建默認樣式,您不需要這樣做,只需定義沒有密鑰的樣式即可。例如,這種風格適用於所有按鈕的應用程序(如果樣式在App.xaml中定義)

 <Style TargetType="{x:Type Button}"> 
      <Style.Setters> 
       <Setter Property="Margin" Value="6"></Setter> 
       <Setter Property="Padding" Value="6,3,6,3"></Setter> 
      </Style.Setters> 
     </Style> 

有了孩子我會認爲你只需要編寫一些代碼,以檢測當一個孩子是問候添加並設置孩子的默認樣式。我想你可以重寫OnVisualChildrenChanged。

PS。設置DefaultStyleKeyProperty應該在靜態構造函數中完成