XAML

2010-11-09 25 views
58

denetimin merkezi etrafında dönüşünü yapmak nasıl 90 dereceye kadar döndürme düğmesine yapmak istiyorum ama kırpılmış alır. Ben piksel it't genişliğini bilmiyorsanız o merkezi etrafında dönmesini sağlamak için nasıl 0.5, 0.5 denetimin RenderTransformOrigin ayarlamak zorundaXAML

+1

RenderTransform veya LayoutTransform kullanıyor musunuz? 90 derecelik bir LayoutTransform, köken belirtmeden bile benim için iyi çalışıyor gibi görünüyor. – grantnz

+0

LayoutTransform kullanıyorum ve düğme, sütun genişliği otomatik olarak ayarlanmış olan 'Izgara' içinde. Doğru rotasyon zaten işe yaramıyor çünkü grid'in sütun genişliğini, düğmenin genişlik yüksekliklerine eşit olarak ayarladığı görülüyor. – Poma

+0

XAML'inizi gönderebilir misiniz? – grantnz

cevap

40
<Button ...> 
    <Button.LayoutTransform> 
    <RotateTransform CenterX="0.5" CenterY="0.5" Angle="90"/> 
    </Button.LayoutTransform> 
</Button> 
+6

bu bir Windows Phone 8 .NET 4.5 C# XAML Uygulama içinde benim için çalışmadı. @FrancescoDeVittori tarafından bir tane olsa çalıştı. – mishan

88

(bir çoğu düğmeleri için şablon var).

ex .:

<Button RenderTransformOrigin="0.5, 0.5"> 
    <RepeatButton.RenderTransform> 
     <RotateTransform Angle="90"/> 
    </RepeatButton.RenderTransform> 
</RepeatButton> 
+7

LayoutTransform' ile oynamak. Belki RenderTransform ve LayoutTransform arasında bir fark var mı? – TheSHEEEP

+1

Evet, bu benim için de geçerli, kabul edilen cevap değil. –

+1

LayoutTarama yanıtı, dönüşmeye çalıştığım öğenin çevresindeki herşeyi değiştirir. RenderTransformOrigin'in ayarlanması ve RenderTransform kullanımı harika, teşekkürler! –

2

Benim anlayış kökenli bir LayoutTransform ile alakalı olmamasıdır.

MSDN diyor:

bir dönüşüm dönen ölçekleme ve güçlü yetenekleri sağlar ayarlama. Ancak, LayoutTransform, TranslateTransform işlemlerini yok sayar. çocuk için düzen sisteminin davranışı FrameworkElement arasında elemanları yerleşimi bir ölçekli veya döndürülmüş elemanın konumuna herhangi bir uzaklıklar otomatik düzeltir ve üst elemanının koordinat sistemi olmasıdır.

aşağıdaki "doğru" düğmesine döner.

<Grid ShowGridLines="True"> 
    <Grid.RowDefinitions> 
     <RowDefinition></RowDefinition> 
     <RowDefinition Height="Auto"></RowDefinition> 
     <RowDefinition></RowDefinition> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition Width="Auto"></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <Button Grid.Row="1" Grid.Column="1">Excessively Long Button Still Ok 
     <Button.LayoutTransform> 
      <RotateTransform Angle="90" /> 
     </Button.LayoutTransform> 
    </Button> 
</Grid>