2012-03-02 4 views
2

私はいくつかのラベルとテキストボックスをホストしている単純なグリッドレイアウトを持っています。最初の列のラベル、2番目の列のラベル。WPFの列と行の定義の略語はありますか?

新しいボックスを追加するときはいつでも、新しい行を占めるように<Grid.RowDefinitions>ブロックに空の<RowDefinition />を追加する必要があります。私はこれらの行にスタイルが付いていないので、これに慣れるのを妨げる何らかの省略形がありますか?

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="65" /> 
    <ColumnDefinition Width="*" /> 
</Grid.ColumnDefinitions> 
<Grid.RowDefinitions> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
</Grid.RowDefinitions> 

答えて

4

はありません、このための短い手の方法はありませんが、独自のソリューションを作成し、または誰かがすでに持っているフレームワークを使用することができます。

たとえば、CODE frameworkを使用すると、リスト6のようにマークアップを定義できます。here。これはカスタムパネルを使用して、共通の編集フォームの定義を大幅に簡素化します。

sourceをダウンロードして実装を見て、必要に応じて調整することができます。

+0

おかげで、CODEは、おそらく私の小さな一度限りのアプリのためのビットやり過ぎですが、私は将来のプロジェクト私はこのアイデアのための提案を提出した – Collin

+0

のためにそれをしておこう。あなたが同意するなら、[あなたの投票に行ってください。](https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/13962687-wpf-grid-column-height-definition-shorthand)。 – Ben

2

グリッドをサブクラス化し、必要な動作を追加できます。

Here

Grid.Row現在の定義がカウントよりも大きいときはいつでも自動的にAutoGridEndRowオブジェクトの新しい行を挿入、ならびにAutoGridの実装です。以下のように

使用法:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:my="clr-namespace:WpfApplication1" 
     Title="Window1" Height="300" Width="300"> 
    <my:AutoGrid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="65" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <Label Content="Label1" /> 
    <TextBox Grid.Column="1" /> 
    <my:AutoGridEndRow /> 

    <Label Content="Label1" /> 
    <TextBox Grid.Column="1" /> 

    </my:AutoGrid> 
</Window> 
+0

これを追加していただきありがとうございます、これを行うにはかなり滑らかな方法のように見えます。 – Collin

関連する問題