2012-01-10 24 views
0

基本クラスコントロールの設定の詳細をカプセル化するラッパークラスをいくつか作成していますが、基本クラスのスタイルを使用したいと考えています。私は次のXAMLでこれを達成することができる午前:基本クラスを使用した派生コントロールXAMLを使用しないスタイル

<Style TargetType="{x:Type bc:DerviedClass}" BasedOn="{StaticResource {x:Type etk:BaseClass}}"/> 

私は、クライアントのプログラマは彼のXAMLコードに次の行を追加する必要がないように、XAMLを使用しないでしょう。 C#でこれを行う方法はありますか?

おかげ

答えて

0

あなたのカスタムコントロールのスタイルをテーマ/ generic.xamlファイルを使用してスタイリング/ Themeingを検討すべきです。 generic.xamlを使用する際に留意すべき

  1. もの:
    • リソースがgeneric.xamlという名前とテーマ(ケース事項)
    • AssemblyInfo.csというフォルダにThemeInfo属性 を必要としなければなりません
      • [アセンブリ:ThemeInfo(ResourceDictionaryLocation.SourceAssembly、ResourceDictionaryLocation.SourceAssembly)]

このテーマは誰でも使用するたびにデフォルトになります。

0

私はこれに対する解決策が見つかりました:OnInitialized()メソッドの内部に配置されている場合

Style s = (Style)derivedObj.FindResource(baseType); 

if(s != null) 
{ 
    Style derivedStyle = new Style(derivedObj.GetType(), s); 
    derivedObj.Style = derivedStyle; 
} 
+0

はい、これは(正しくコンストラクタでは動作しません)動作します。ただし、設計者には適用されません。何か案は? –

関連する問題