yapabilirsiniz FluidLayout denilen Blend bir özelliği yoktur. Blend
Eğer gerekli dosyalar Microsoft.Expression.Interactions ve System.Windows.Interactivity olmalıdır SDK indirebilirsiniz Blend var yoksa. Bunlara referans ekleyin ve aşağıdaki örneği deneyin.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:il="clr-namespace:Microsoft.Expression.Interactivity.Layout;assembly=Microsoft.Expression.Interactions"
xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
x:Class="WpfApplication4.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Grid x:Name="LayoutRoot">
<VisualStateManager.CustomVisualStateManager>
<ic:ExtendedVisualStateManager/>
</VisualStateManager.CustomVisualStateManager>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="Orientation" ic:ExtendedVisualStateManager.UseFluidLayout="True">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="00:00:00.3000000"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Vertical"/>
<VisualState x:Name="Horizontal">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="stack" Storyboard.TargetProperty="(StackPanel.Orientation)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Orientation.Horizontal}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<StackPanel x:Name="stack" Margin="8,49,8,8">
<Button Content="Button"/>
<Button Content="Button"/>
<Button Content="Button"/>
<Button Content="Button"/>
<Button Content="Button"/>
</StackPanel>
<Button HorizontalAlignment="Left" Margin="8,8,0,0" VerticalAlignment="Top" Width="97" Height="25" Content="H">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ic:GoToStateAction StateName="Horizontal"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button HorizontalAlignment="Left" Margin="109,8,0,0" VerticalAlignment="Top" Width="97" Height="25" Content="V">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ic:GoToStateAction StateName="Vertical"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Grid>
</Window>
Sen unsurları taşımak için durumlarını kullanarak öğe geçişi işlemek için benzer bir yöntemi kullanmak veya Grid.Row, RowSpan, Col değiştirerek yapabilirsiniz. Her şeyi birbirine bağlamak için bazı kodlara ihtiyacınız olabilir. Sorunları çözersem daha ayrıntılı bir örnek arıyorum.
Bağırsak bana bazı çeviri dönüşümleri yapmak için bir kod yazmak zorunda kalacağını ve bunun güzel olmayacağını söylüyor. Kimsenin hoş bir yoldan gelip gelmediğini görmek ilginç olacak. – Ray
ViewBox ile ilişkili belirli bir alana yerleştirmeye mi çalışıyorsunuz ... örneğin ViewBox boyutundan bağımsız olarak her zaman ... –
* İstenilen efekti * elde edemeyebilir, ancak bu değişikliği uygulamak için daha az karmaşık olabilen daha yumuşak bir yöntem de, TextPanel'in yönünü değiştirdiğinizde metni soldurup daha sonra yeniden oluşturabilir (bir DataTrigger kullanarak). Örneğin, ve zamanlama hakkını ne kadar kolay alabileceğinizi bilmesem de Start-/ EndActions, ...) –