2011-02-13 8 views
22

私はDataGridを拡張するカスタムコントロールを持っています。それはExtendedDataGridと呼ばれます。 のスタイルは、テンプレートを変更する以外はDataGridスタイルと同じです。私はこのようなものを試しました:デフォルトのDataGridスタイルに基づいてスタイルを作成する方法は?

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}"> 
    <Setter Property="Template"> 
    ... 
    </Setter> 
</Style> 

しかし、それはリソースが見つからないと言います。

だから私は試してみてください。

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {ComponentResourceKey ResourceId=DataGridStyle, TypeInTargetAssembly={x:Type DataGrid}}}"> 
    <Setter Property="Template"> 
    ... 
    </Setter> 
</Style> 

しかし、それはまた...動作しません。だから私は何をしますか?

答えて

44

まあの謎が解決される:)

実際に上記の私の最初のコードは動作します:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}"> 
    <Setter Property="Template"> 
    ... 
    </Setter> 
</Style> 

私はそれがVS(またはReSharperの)becase動作していないと考え、そのリソースがあると言って自分のコードに誤りがありました見つからない... VS(またはResharper)のバグ:(

+0

-.-そう思って、デザイナーを使っていますか? –

+0

はい、私はそれをなぜ使うのですか? – drasto

+8

本当に良い言い訳がない限り(XAMLを書く方法を知らないうちに:P)、誰も使用しないでください。実際には何かがうまくいかないと主張することがよくあります。 –

2

あなたは TargetTypeプロパティとスタイルを作成し、 にも TargetTypeプロパティ、ターゲット・タイプを定義する別のスタイルを、それをベースにした場合や由来するとして導出スタイルの は同じ でなければなりません 基本スタイルのタイプです。

グリッドはDataGridから継承されますか?

+0

はい、それは解決します。上記の私の答えを参照してください:) – drasto

+0

それが動作しないことに気づいたので、それがないかもしれないことが不思議でした。 –

関連する問題