2016-12-16 210 views
7

如何在按钮中显示图像/图标和文本?UWP xaml:如何显示带有图标和文本的按钮?

<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> 

我可以一个taplistener添加到StackPanel的,但是这不会使StackPanel中有一个像真正的按钮的视觉效果。

我也试过:

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

但我不能设置内容的两倍。我想要一个按钮中的文本和图标,所以当用户点击它时,它会有一个像按钮一样的视觉效果。这可能吗?还是有其他人有另一种方法来实现这一目标?

感谢您的阅读。

+4

'' –

+0

@ChrisW。谢谢你的工作!不知道你能做到这一点。 – Denny

+1

@ChrisW。张贴它作为答案丹尼可以接受它。 –

回答

10

所以,因为我找不到直接重复(我可以发誓这是以前问过的问题的类型)我想我会提供一个合法的答案。

按钮模板的核心部分是ContentPresenter,它允许您传入任何CLR对象。但要注意的是只有一个可以通过。但是,如果该对象是一个能够容纳儿童的面板,那么它将通过所有内容作为内容。

所以在这种情况下,如果我们这样做了:

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

然后,它会失败,并抱怨允许在一次只有一个对象。

除非你提供一个父面板持有那些孩子,它尊重所有的内容,并提供所需的结果为例:

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

那么既然StackPanel是一个CLR对象,它可以托管孩子,你很好走。希望这有助于,欢呼!

+0

我也找不到直接的答案:( – Denny

+0

这个按预期工作,谢谢! – yehanny

+1

很好的答案,使按钮完全灵活。 – peterincumbria

相关问题