2011-07-30 3 views
2

私はWPFが初めてです。WPFレイアウト、これをクリーンアップできますか?

私はWPFアプリケーションでサイドバーを作成していて、角を丸くしたいです。私が学んだのはあなたがグリッドにつけることができるプロパティではありません。また、私は境界線のコントロールにtextblocksを入れてみましたが、私が戻ってきたエラーメッセージは、 "子供は一度しか設定できません"と言いました。

以下は私が今までに行ったコードですが、私は自分のtextblocksをスタックパネルにネストする必要はありません。これは、グリッドにネストされていて、境界にネストされ、親グリッドにネストされています。これをきれいにする方法はありますか?

<Grid Style="{StaticResource SideBar}"> 
    <Border Style="{StaticResource RoundedSidebar}"> 
     <Grid> 
      <StackPanel Orientation="Vertical" VerticalAlignment="Top"> 
       <TextBlock /> 
       <TextBlock /> 
       <TextBlock /> 
      </StackPanel> 
     </Grid> 
    </Border> 
</Grid> 

すべてのフィードバックをいただければ幸いです(可能性として組織として、何の心配は、再び、一種の新しい本に、そしてちょうど私のXAMLを得るために探していない場合ではありません)。

おかげ

答えて

2

あなたがそのoutterのGrid要素内のボーダー以外の任意の要素を持っていない場合、あなたは初心者のためにそれを削除することができます。

また、あなたが今、あなたの境界線を持っている方法は、そのStackPanelのは、国境の内側のグリッドの唯一の要素であることを、あなたにもそのグリッドを削除することができます...

最後に、あなたがする必要はありませんOrientationプロパティは、Verticalがデフォルトであり、StackPanel内にTextBlocksや他の要素を積み重ねるのが完全であるため、結局その目的です...

+0

ありがとうたくさんの、これは素晴らしい仕事...たくさんのクリーナー – kdub

1

クリーンアップはあまりありません。ここで私は何をするでしょうか:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="auto"/> 
    </Grid.ColumnDefinitions> 
    <Border Style="{StaticResource RoundedSidebar}" Grid.Column="1"> 
     <StackPanel Orientation="Vertical" VerticalAlignment="Top"> 
      <TextBlock /> 
      <TextBlock /> 
      <TextBlock /> 
     </StackPanel> 
    </Border> 
</Grid> 
+0

余分な列はなぜですか? – kenwarner

+0

サイドバーを簡単に作成できることを示すために余分な列があると思います。 'Border'の中の' Grid'は唯一の(微)最適化のようです。 +1 – xlk

+0

実際、あなたが持っていた外部グリッドは必要ではなかったので、私はそれをメイングリッドに変えました。 –

関連する問題