2016-03-29 23 views
1

içinde ClipToBounds öğesini yoksayar ColumnDefinition 'un genişliği * olan Grid gerçekten verildiğinde, düğmelerin içindeki kodlanmış genişlik özniteliği yoksayılır ve bu alt öğeler kırpılır. Auto'a ayarlanmış bir genişlikle kırpılmamışlardır. Hers her ColumnDefinition üzerinde ayarlanmışsa, bu kırpma engellenir, ancak bu tam olarak dinamik değildir.Grid, WPF

Hatalı şeyler yapıyorum veya bu en iyi WPF'nin sunması gereken mi?

enter image description here

olur

enter image description here

Biçimlendirme:

<Grid ShowGridLines="True" ClipToBounds="False"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition></ColumnDefinition> 
      <ColumnDefinition></ColumnDefinition> 
      <ColumnDefinition></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
      <Button Grid.Column="0" Width="120">AAAAA</Button> 
      <Button Grid.Column="1" Width="120">BBBB</Button> 
      <Button Grid.Column="2" Width="120">CCCCC</Button> 
    </Grid> 

Orada oda ve görüntünün üç olarak ne zaman ilk resim başına olarak görünmesini düğmeleri istiyorum Hiçbiri yoktur (yani hiçbir koşulda kırpma olmaz).

enter image description here

+0

Pencere en aza indirildiğinde ne yapmak istediğinize ilişkin bir şema ekleyebiliyor musunuz? düğmeler daima 120 genişlikli midir yoksa yeniden boyutlandırmak için pencereleri küçültmek mi istiyorsunuz? thx – SWilko

+0

@SWilko güncellendi soru – maxp

cevap

1

Ahh şu şekilde bunu çözdük:

anahtar ColumnDefinition yılında MinWidth niteliktir.

<Grid ShowGridLines="True"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition MinWidth="{Binding Path=ActualWidth, ElementName=spLeft }"></ColumnDefinition> 
      <ColumnDefinition MinWidth="{Binding Path=ActualWidth, ElementName=spMid }"></ColumnDefinition> 
      <ColumnDefinition MinWidth="{Binding Path=ActualWidth, ElementName=spRight }"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <StackPanel Background="Red" Grid.Column="0" Name="spLeft" HorizontalAlignment="Center"> 
      <Button Width="120">AAAAA</Button> 
     </StackPanel> 
     <StackPanel Background="Green" HorizontalAlignment="Center" Grid.Column="1" Name="spMid"> 
      <Button Width="120">BBBB</Button> 
     </StackPanel> 
     <StackPanel Background="Blue" Name="spRight" Grid.Column="2" HorizontalAlignment="Center"> 
      <Button Width="120">CCCCC</Button> 
     </StackPanel> 
    </Grid> 
0

Sadece Grid bir MinWidth ekleyin:

<Grid ShowGridLines="True" ClipToBounds="False" MinWidth="360"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
     <Button Grid.Column="0" Width="120">AAAAA</Button> 
     <Button Grid.Column="1" Width="120">BBBB</Button> 
     <Button Grid.Column="2" Width="120">CCCCC</Button> 
</Grid> 
+0

Merhaba Arnaud, cevabınız için teşekkürler. Ben bir literal 'minwidth'ı kodlamamı gerektirmeyen dinamik bir yaklaşım arıyordum. Bu çözüm için cevabımı görün. – maxp

+0

Merhaba Maxp, teknik olarak bu, sizin ifade etmediğiniz bir şeyi istediğinizi anlayabilsem de, sorunuza doğru bir cevaptır. Ayrıca neyse MinWidth cevabı. –