2012-04-25 2 views
0

wpf listviewの列ヘッダーの可視性を依存プロパティーにバインドしたいと思います。グローバル・スタイルを失うことなくバインド・カラムのヘッダーの可視性を表示する

は私がスタイルを定義した:

<Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}"> 
    <Setter Property="Visibility" Value="{Binding ColumnHeaderVisibility}" /> 
</Style> 

それから私はこのようにそれを適用:

<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}"> 

私が表現暗いテーマを使用しています。 MergedDictionariesを介してインポートされ、実行時に変更することができます。

列見出しが見えない場合はすべて問題ありません。しかし、可視の場合、ColumnHeaderContainerStyleを設定すると式のダークスタイルがオーバーライドされるため、デフォルトのウィンドウスタイルで表示されます。

元のスタイルに "BasedOn"を使用することは、実行時にスタイルを変更する必要があるため、すべてのリソースが動的なので、オプションではありません。 BasedOnは静的リソースでのみ動作し、実行時には変更できません。

他に何ができますか?

答えて

1

これが機能するかどうかはわかりませんが、デフォルトのスタイルに基づいてスタイルを設定できます。

<Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}"> 
    <Setter Property="Visibility" Value="{Binding ColumnHeaderVisibility}" /> 
</Style> 
+0

試しました。スタイルはデフォルトスタイルから継承されません(おそらく、staticresourceとして参照され、スタイルがまだ設定されていないコンパイル時に解決されるためです)。 –

関連する問題