WPF

2015-07-27 21 views
5

'daki genişliğin doldurulması için düğme içeriği nasıl alınır Aşağıdaki XAML'de, pencere yeniden boyutlandιrιr gibi, pencerenin genişliğine uyacak biçimde düğme uzar. Ancak, TextBlock ve mavi kutu ortalanır. Bunu nasıl değiştirirsiniz: 1) TextBlock Düğmenin içinde, ancak gerçek Düğme genişliği ile (örneğin Pencerenin sol tarafında) haklı bir şekilde sola bırakılmışsa 2) Tuval Düğmenin içinde, ancak sağa yaslanmış (yani penceresinin sağ tarafında) fiili Düğme genişliğindeWPF

O Otomatik boyutlandırma kullanırken "HorizontalAlignment = Stretch", bu durumda çalışabilir ve yok görünüyor, Düğme içindeki Izgara sadece şimdiye kadar büyür içeriği için gereken minimum genişlik.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Name="Window" 
    Title="test" 
    Width="640" Height="480"> 

    <Grid x:Name="LayoutRoot"> 
     <Button Height="30"> 
      <Grid HorizontalAlignment="Stretch"> 
       <TextBlock Text="Sample Text" HorizontalAlignment="Stretch" TextAlignment="Left"></TextBlock> 
       <Canvas Width="40" Background="AliceBlue" HorizontalAlignment="Right"></Canvas> 
      </Grid> 
     </Button> 
    </Grid> 
</Window> 

cevap

6

Button.Template ayarlamalısınız. Ayrıca öğelerin konumunu ve genişliğini doğru şekilde ayarlamak için Grid.ColumnDefinitions kullanılabilir.

 <Button Height="30" Content="Smaple text"> 
      <Button.Template> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Grid> 
         <Border Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}"> 
          <Grid> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="Auto"/> 
            <ColumnDefinition Width="*"/> 
           </Grid.ColumnDefinitions> 
           <ContentPresenter HorizontalAlignment="Left" Grid.Column="0" 
              VerticalAlignment="Center"/> 
           <Canvas Background="AliceBlue" Grid.Column="1" /> 
          </Grid> 
         </Border> 
        </Grid> 
       </ControlTemplate> 
      </Button.Template> 
     </Button> 
+0

Bu çalışma - teşekkürler! Neden çalıştığını açıklar mısınız? –

+0

Düğmenizin içine öğeler eklediğinizde (sorunuzda yaptığınız gibi) aslında 'Button.Content' ayarlıyorsunuz ama yapmak istediğiniz şey düğmenin düzenini değiştirmek ve 'Button.Template' ayarlanarak elde edilebilmekti. '. –