2016-07-05 5 views
2

グリッドには、多くのラベル、コンボボックス、テキストボックスが含まれています。 私はラベルとコンボボックスの両方を各セルに入れています。何がベストプラクティスですwpfグリッドのベストプラクティス

:単純にグリッドセルに直接2つのコントロールを配置し、スタックパネルに 1.コンボボックスとラベルとセル2に置き

利点は何ですか両方のアプローチの短所と欠点?

は、同じセル内で一緒に両方のコントロールを置くの欠点は、二番目は(あなたがそれを試してみましたたければ、あなたが気づいているだろうがある)最初の上に重畳されていることであるあなたに

答えて

3

に感謝し、それを修正する唯一の方法は、奇妙なマージンを与えたり、両方をStackPanelに入れることです。だから誰もがそれらをStackPanelに入れているのです。

私はこれをお勧め:(あなたの心の海賊フレームにしている場合は、自分自身をApp.xamlまたは)下図のようにスタイルを定義し、App.xamlに含まれ、いくつかのグローバルなものにそれを置く:

<Style x:Key="FieldStyle" TargetType="HeaderedContentControl"> 
    <Setter Property="Margin" Value="8,3" /> 
    <Setter Property="MinWidth" Value="300" /> 
    <Setter Property="IsTabStop" Value="False" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="HeaderedContentControl"> 
       <StackPanel Orientation="Vertical"> 
        <Label 
         FontWeight="Bold" 
         Content="{TemplateBinding Header}" 
         /> 
        <ContentPresenter 
         Margin="8,0,0,0" 
         /> 
       </StackPanel> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

これにより、すべてのラベル/コントロールペアの書式設定を簡単に変更できます。私は通常、StackPanelまたはWrapPanel自分自身でこれらのものの混乱を叩きつけるだろうが、Gridがあなたのレイアウトに合っているならば、ぜひそれを行けばよい。

そのスタイルのテンプレートはおそらくTemplateBindingよりもはるかに多くのものになるはずですが、入力に疲れてしまい、実際に使うつもりです。

関連する問題