How to anchor controls in WPF?

2019-03-12 05:40发布

问题:

I have a a TreeView that fills the top part of the application, but since the number of items in the TreeView changes, my Apply button changes its position vertically. Is there a way to anchor it to the bottom part of the window, so it's always on the right bottom part of the window, i.e. 10x10 distance from the right bottom edge.

回答1:

You can either set the HorizontalAlignment and VerticalAlignment on the TreeView or Button (I cannot tell which control you are trying to anchor), or you could place the control inside a DockPanel.

To space the control away from others use the Margin.

Margin="0 0 10 10"

will give you the margin only on the right and bottom

I hope this makes it a bit clearer:

<Window>   
  <DockPanel VerticalAlignment="Stretch">
    <TreeView DockPanel.Dock="Top" />
    <Button DockPanel.Dock="Bottom" Margin="0 0 10 10" />   
  </DockPanel>
</Window>


回答2:

To achieve anchoring, Set following properties:

  • Width="auto"
  • Height="auto"
  • VerticalAlignment="Stretch"
  • HorizontalAlignment="Stretch"
  • Set margins as needed.

Example:

    <TabControl

        Name="tabControl1"

        HorizontalAlignment="Stretch" 

        Margin="40,40,40,40"  

        Width="auto" 

        Height="auto" 

        VerticalAlignment="Stretch">


回答3:

I think you need this in the XAML of your button:

HorizontalAlignment="Right" VerticalAlignment="Bottom"


标签: c# .net wpf anchor