スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

添付プロパティ(Attached Property)

依存関係プロパティに並んで、大事なのが、添付プロパティと呼ばれる機構。
依存関係プロパティは、そのプロパティを持つクラスに対してのみ設定できたのに対して、
添付プロパティは、自身以外に設定するプロパティ。自身以外のものに、自分専用のプロパティを添付するって感じかな。
相手に頼んで持ってもらう自分用の情報付タグ?そんな感じ。
これで大概の事ができてしまう。開発では、コントロールを継承する代わりに、添付プロパティを使いまくった。特にDataGrid周り。
仕事では、セルのマージまでやっちまったい。

よく使うのが、DockPanelが持つDockプロパティ。
既出のプロパティで言えば、TextElementのFontSizeプロパティとか。
以下はDockPanelのサンプル

<Window x:Class="TawamureDays.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<DockPanel>
<Label Name="lbTitle" DockPanel.Dock="Top">C#と戯れる日々</Label>
<Label DockPanel.Dock="Top">Edit by チャプターマン</Label>
<Label DockPanel.Dock="Top">Since: 2012/05/14(火)</Label>
<StatusBar DockPanel.Dock="Bottom">
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center">this place is status bar.</TextBlock>
<Button Margin="13,1,1,0">ボタンだよ</Button>
</StackPanel>
</StatusBar>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" TextElement.FontSize="25"
DockPanel.Dock="Bottom">
<Button Content="閉じる" MinWidth="75"/>
<Button Content="OK" MinWidth="75"/>
<Button Content="CANCEL" MinWidth="75"/>
</StackPanel>
<ListBox Name="List1">
<ListBoxItem>C#</ListBoxItem>
<ListBoxItem>WPF</ListBoxItem>
<ListBoxItem>その他</ListBoxItem>
</ListBox>
</DockPanel>
</Window>

DockPanelの描画時に、子コントロールをどこにドッキングさせるかを添付プロパティでもたせている。
子コントロールを派生させる事なく、欲しい情報をもたせている。
ちなみにC#上でも、添付プロパティの値を取得することはできる。

var dock = DockPanel.GetDock(lbTitle);

添付プロパティは、依存関係プロパティのようにCLRプロパティではなく、SetXXXXとGetXXXXのメソッドを持つ。
これを利用できる。
書いたXAMLでできた画面
20120523_1.png
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。