2010-06-05 13 views
26

Ich lerne WPF und kann mir nicht vorstellen, wie ich meine Knöpfe quadratisch gestalten kann.WPF dynamisches Layout: Wie erzwingen Sie quadratische Proportionen (Breite entspricht Höhe)?

Hier mein XAML Markup ist:

<Window x:Class="Example" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Height="368" Width="333"> 
    <Window.Resources> 
    <Style x:Key="ToggleStyle" BasedOn="{StaticResource {x:Type ToggleButton}}" 
          TargetType="{x:Type RadioButton}"> 
    </Style> 
    </Window.Resources> 
    <RadioButton Style="{StaticResource ToggleStyle}"> 
     Very very long text 
    </RadioButton> 
</Window> 

explizite Werte für Width und Height Attribute angeben scheint wie eine falsche Vorstellung - die Taste sollte seine Dimensionen basierend auf seinen Inhalt automatisch, sondern behalten ihre Breite und Höhe gleich berechnen . Ist das möglich?

+0

http://stackoverflow.com/questions/288954/how-do-i-keep-aspect-ratio-on-scalable-scrollable-content-in-wpf – Mangesh

Antwort

36

Versuchen Sie, diese - in Kaxaml scheint zu funktionieren:

<Button 
    MinWidth="{Binding ActualHeight, RelativeSource={RelativeSource Self}}" 
    MinHeight="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"> 
    Some content 
</Button> 

(Um zu testen, habe ich eine TextBox innerhalb der Schaltfläche, weil das eine einfache Möglichkeit ist, die Inhaltsgröße zu ändern, ohne das Xaml erneut zu analysieren.)

Edit: Sorry, sollte wahrscheinlich angegeben haben, ich t als Stil Ihr Beispiel entsprechen:

<Style TargetType="Button" x:Key="SquareButton"> 
    <Setter Property="MinWidth" Value="{Binding ActualHeight, RelativeSource={RelativeSource Self}}" /> 
    <Setter Property="MinHeight" Value="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" /> 
</Style> 
+0

Es gibt eine Möglichkeit, dasselbe zu tun, aber statt min, für max? –

+0

Sie sollten eine separate Frage stellen; Ich bin mir nicht sicher, was Sie versuchen würden zu erreichen. Dieser Ausschnitt zwingt eine Schaltfläche, quadratisch zu sein, die ihren Inhalt umgibt; Was würdest du versuchen zu erreichen? –

+0

Ich habe die Antwort geschrieben: http://stackoverflow.com/questions/29620938/windows-phone-xaml-force-square-proportionierte-container-aspectratio-11 –

4

Ich glaube, Sie wollen ihre Höhe binden Taste Breite, wie folgt aus:

<Button Name="myButton" 
Width="{Binding ElementName=myButton, Path=Height}" 
Height="100"> 
Button Text 
</Button> 
+4

Ich denke, Gart will, dass es immer noch auf Inhalt skaliert, was etwas komplizierter zu erreichen ist. Anstatt "ElementName" zu verwenden, können Sie auch 'RelativeSource = {RelativeSource Self}' verwenden, das einfacher zu übertragen ist. –

+0

@Dan Puzey, Thanks =) – n535

Verwandte Themen