スポンサーサイト

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

Gridパネルのちょっとした小技

Gridパネルで、入力画面を作ることが多くなった。Gridパネルは、入力項目をいくつも並べるような時は特に勝手が良い。
その際、何行目に表示するかは、Grid.Rowプロパティで指定する。何列目に表示するかは、Grid.Columnプロパティで指定する。添付プロパティプロパティなので、いつでも取外しができたり、再びつけたりできる。ただ、この行数が増えるとちょっとめんどくさい事が起こる。例えば、項目を忘れていて、何行目かに差し込みたいときとか。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
...
<RowDefinition/>
</Grid.RowDefinitions>
<Label Content="項目1"/>
<TextBox Text=""
Grid.Column="1"/>
...
<Label Content="項目2"/>
<TextBox Text=""
Grid.Row="10"
Grid.Column="1"/>
<Grid>

このデザインで、4行目に新しく綱目を差し込みたいとき、

Grid.Row="3"になっているコントロールを全部Grid.Row="4"に
Grid.Row="4"になっているコントロールを全部Grid.Row="5"に
Grid.Row="5"になっているコントロールを全部Grid.Row="6"に
...以下略

しかも、結局要らなくなった時なんか…ウキー!とかなってしまいそうになる。
そこで、このGrid.Rowに設定する値を同じ行のコントロールで共有する(変数化)する事にした。
まず、名前空間の宣言

<Window x:Class="TawamureDays.MainWindow"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
...
</Window>

リソースにint型の変数を宣言して、それをGrid.Rowプロパティに設定する
<Grid.Resources>
<sys:Int32 x:Key="Line_XXXX">1</sys:Int32>
<sys:Int32 x:Key="Line_YYYY">2</sys:Int32>
...
<sys:Int32 x:Key="Line_ZZZZ">3</sys:Int32>
</Grid.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
...
<RowDefinition/>
</Grid.RowDefinitions>
<Label Content="項目1"/>
<TextBox Text=""
Grid.Column="1"
/>
<Label Content="項目2"/>
<TextBox Text=""
Grid.Row="{StaticResource Line_XXXX}"
Grid.Column="1"
/>
...
<Label Content="項目10"/>
<TextBox Text=""
Grid.Row="{StaticResource Line_ZZZZ}"
Grid.Column="1"
/>
<Grid>

コントロールのリソースには、int等のプリミティブな変数も設定することができる。
宣言がちょっとめんどくさいけど、後々の事を考えると、これの方が良いかもしれない。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


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

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

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

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

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