2016-12-16 1 views
7

Wie kann ich ein Bild/Symbol UND Text in einer Schaltfläche anzeigen?UWP xaml: Wie wird eine Schaltfläche mit Symbol und Text angezeigt?

<StackPanel Name="stackPanel" Orientation="Horizontal" Tapped="stackPanel_Tapped"> 
    <Button x:Name="button" FontFamily="Segoe MDL2 Assets" Content="&#xE779;" Width="50" Height="50" Background="Transparent" /> 
    <TextBlock Text="Grades" FontSize="18" VerticalAlignment="Center" /> 
</StackPanel> 

kann ich eine taplistener zum Stackpanel hinzufügen, aber das wird nicht die Stackpanel hat wie eine echte Taste visuellen Effekt machen.

habe ich auch versucht:

<Button FontFamily="Segoe MDL2 Assets" Width="50" Height="50" x:Name="button" Content="test"> 
    <Image x:Name="button" Source="Assets/test.png" /> 
</Button> 

Aber ich kann den Inhalt zweimal nicht festgelegt. Ich möchte sowohl Text als auch ein Symbol in einer Schaltfläche haben. Wenn ein Benutzer darauf klickt, hat es einen visuellen Effekt wie eine Schaltfläche. Ist das möglich? Oder hat jemand anderes eine andere Methode, um dies zu erreichen?

Danke fürs Lesen.

+4

'' –

+0

@ChrisW. Danke das hat funktioniert! Ich wusste nicht, dass du das kannst. – Denny

+1

@ChrisW. Post es als Antwort, damit Denny es akzeptieren kann. –

Antwort

10

Da ich also kein direktes Duplikat finden konnte (was ich schwören könnte, dass dies die Art von Frage ist, die schon einmal gestellt wurde), werde ich eine legitime Antwort liefern.

Im Herzen der Vorlage der Schaltfläche befindet sich eine ContentPresenter, mit der Sie jedes CLR-Objekt übergeben können. Der Vorbehalt ist jedoch, dass nur einer übergeben werden kann. Wenn dieses Objekt jedoch ein Panel ist, das Kinder enthalten kann, wird alles als Inhalt durchgelassen.

in diesem Fall also, wenn wir es auf diese Weise tun:

<Button> 
    <Image/> 
    <TextBlock/> 
</Button> 

Dann wird es scheitern und über nur ein Objekt zu einer Zeit erlaubt beschweren.

Außer, wenn Sie eine übergeordnete Panel bieten, diese Kinder zu halten, ist es alles als Inhalt respektiert und das gewünschte Ergebnis als Beispiel nennen:

<Button> 
    <StackPanel> 
     <Image/> 
     <TextBlock/> 
    </StackPanel> 
</Button> 

So, da StackPanel ist ein CLR-Objekt, das Kind aufnehmen kann, Du bist gut zu gehen. Hoffe, das hilft, Prost!

+0

Ich konnte auch keine direkte Antwort finden :( – Denny

+0

Dies funktioniert wie erwartet danke! – yehanny

+1

große Antwort, macht den Knopf voll flexibel. – peterincumbria

Verwandte Themen