2015-04-23 18 views
2

我是Windows 8.1开发新手,所以请原谅我,如果回答这个问题很明显,但我一直在殴打一段时间,并且无法使其工作。这里的情况:在Windows 8.1 XAML/C#应用程序中,我该如何精确设计按钮的样式?

我做了一个用户控件为了风格的按钮,以及添加额外的功能。下面是该代码:

<UserControl 
    x:Class="MyCalculator.CalculatorButton" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:MyCalculator" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    d:DesignHeight="300" 
    d:DesignWidth="400" 
    mc:Ignorable="d" 
> 
    <!-- THIS GRID TAKES UP THE WHOLE WIDTH AND HEIGHT --> 
    <Grid x:Name="LayoutRoot"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <!-- THIS BUTTON TAKES UP THE WHOLE SIZE OF THE GRID --> 
     <Button 
      VerticalAlignment="Stretch" 
      HorizontalAlignment="Stretch" 
      BorderBrush="Blue" 
      BorderThickness="1" 
      Background="AliceBlue" 
      Padding="0" 
      Content="How can I make this bigger?" 
      Foreground="Blue" 
      Grid.Row="0" 
      Grid.Column="0" 
     /> 
    </Grid> 
</UserControl> 

这里是什么样子的设计师 The Grid takes up the whole space, and the Button takes up the whole space, but the Button's color and border are clearly much smaller

你会发现,按键显得既水平,垂直居中,并且是相当小的。但是,当我点击代码中的按钮时,网格的整个大小(占用设计器中的整个400 x 300区域)由按钮填充。

所以Button正在填充网格,填充该区域。但Button的边框和背景在Button的中间是非常小的。更糟的是,它甚至不能包含文本。这显然不是期望的外观和感觉。

我在做什么想要做?我想要AliceBlue按钮背景填充整个网格,填充整个400 x 300的区域。我想'我怎样才能让这个更大?'蓝色内容字符串在AliceBlue-ness的大行中垂直和水平居中,这将导致。

我已经尝试过在网格和按钮上的边距,填充,高度,宽度和其他属性的规范的无数组合。没有任何东西影响Button的AliceBlue区域的大小或位置。

显然我错过了一些东西。任何人都可以帮助我理解这是什么,以及如何格式化我的按钮(或一般的用户控件)以便按照我希望的方式进行设置?

在此先感谢您的帮助!

+0

我不确定,但这里有几个想法......你可以包括你的Grid.RowDefinitions和Grid.ColumnDefinitions吗?你有没有尝试在你的Button上分配Grid.Row =“0”和Grid.Column =“0”,以便它知道它应该在那个位置? –

+1

“我创建了一个用户控件来设计一个按钮的样式”......真的是WPF中的错误方法,您应该创建一个样式并使用根按钮类型并将样式应用到它。 –

+0

嗨@RonBeyer,感谢您的输入。首先,我在WinRT中,而不是WPF,所以我不知道这是否会改变任何东西(我知道这些平台之间存在一些显着差异)。其次,我创建了一个样式并使用根按钮类型并将样式应用于该样式,但在我的实际页面上下文中不起作用,因此为了找出我试图找出的部分,我创建了一个样式UserControl,所以我可以专门针对这一点进行迭代。而且,最终,它会比Button更多地参与其中,因此自定义UserControl似乎是最佳方式。 –

回答

1

而不是分配一个字符串值的Content属性,你试图把一个TextBlock子元素?这可能会给你更多的控制嗨。 Button可以设置Horizo​​ntalContentAlignment和VerticalContentAlignment。然后您可以独立修改按钮内部的子文本块的Horizo​​ntalAlignment和VerticalAlignment。

+0

解决方案(我可以在此发布其他人发布的内容,但我猜不是?)最终得到的是Button具有Horizo​​ntalContentAlignment和VerticalContentAlignment属性,并将它们设置为Stretch做了我所需要的操作。本身并不需要在Button.Content中放置一个TextBlock。但是,谢谢你的回答,我将它标记为正确的,因为我认为它会起作用,即使它不完全是我最终的结果。 –

相关问题