2017-02-02 5 views
0

私は現在WPFを学習していますが、この間にコントロール用に設定できるHorizo​​ntalAlignment/VerticalAlignmentプロパティが出てきました。余分なスペースがあるときにコントロールがレイアウトコントロールに配置される場所を決定します。私はウィンドウでこのコードを配置して実行すると、それはこのように表示され、今明示的に設定されていない場合、レイアウトパネル(StackPanel)でコントロール(幅、長さ、ボタン)の幅を取得する場所はどこですか?

<StackPanel> 
    <Label HorizontalAlignment="Center">A Button Stack</Label> 
    <Button HorizontalAlignment="Left">Button 1</Button> 
    <Button HorizontalAlignment="Right">Button 2</Button> 
    <Button>Button 3</Button> 
    <Button>Button 4</Button> 
</StackPanel> 

Horizontal/VerticalAlignment

私のクエリは次のとおりです。今 、私は、次のコードブロックに探していたんどこからそれらのコントロールの幅プロパティを設定していないので、Button1とButton2の幅が決まっていますか? StackPanel

答えて

0

デフォルトの動作では、垂直方向にコントロールをスタックすることであり、あなたがOrientationを切り替えた場合の項目のHorizondalAlignmentStretchとその逆となります。

HorizontalAlignmentLeftまたはRightに設定すると、制御がWidthを設計通りにするようになります。

ButtonWidthにあなたの質問に答えるために

<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
    <ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
</Border> 

BorderContentそれに基づいてWidthを調整するために、デフォルトの能力を持っているとして、Buttonのデフォルトのテンプレートは、このような方法で設計されて保持する。あなたのケースでは

Contentは、いくつかのwidthを占有し、Button

widthされるテキスト 「ボタン1」です
関連する問題