fc2ブログ

antsk blog

WPFコントロールのテンプレートをいじりたい

WPFの標準コントロールテンプレートはまだこなれてないというか、
ControlTemplateをいじって問題を解決しなきゃいけない場面がある。

ListView のカラムヘッダの幅を固定する
とか、
Horizontal stretch on TreeViewItems
とか。


……で、上記のページでは解決法が示されてるんだけど、
これだとTemplateを丸ごと置き換えなきゃいけない。

そうすると、イチからアプリケーションテーマを作りこんでるならともかく、
標準テーマでやってる場合はシステムのほかの部分のコントロールから
見た目が浮いてしまう。

テンプレートは標準のままで、問題になってる一部分を修正して使いたい。
……というわけで、だいぶ限定的だけど、そんな感じのものを作った。

TemplateOperation.cs

これで提供される TemplateOperation.AddStyle 添付プロパティを使って
<GridViewColumnHeader>
<TemplateOperation.AddStyle>
<ResourceDictionary>
<Style x:Key="PART_HeaderGripper">
<Setter Property="Control.Visibility"
Value="Collapsed" />
</Style>
</ResourceDictionary>
</TemplateOperation.AddStyle>
</GridViewColumnHeader>

と書くと、テンプレート内の "PART_HeaderGripper"要素を
非表示にするのでユーザーは列サイズを変更できなくなる。

……ま、テンプレートの要素名がいつも同じとは限らないわけだが
少なくとも現在PresentationFrameworkにくっついてる標準Templateでは
どのテーマも同じ名前を各要素につけてるから大丈夫なはず。
※ AeroとClassicしか試してない

たぶんMSDNのサンプルテーマは標準テーマと同じ内容のはずで、
これを基に作った多くのアプリケーションテーマでもそれなりに利用できる、といいなあ。


以下利用サンプルzip.(拡張子変えてアップしてる)
XAMLUtil.mp3

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2009/09/12(土) 00:41:14|
  2. WPF
  3. | トラックバック:0
  4. | コメント:0
<<WPFのLabel.Target | ホーム | WPFパネルの使い方まとめ>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://antsk.blog99.fc2.com/tb.php/8-a1cedb3d
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

antsk

Author:antsk
主にC#のプログラマ。

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (0)
.net (1)
WPF (8)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード