在 Windows 8.1 XAML/C# 应用程序中,如何精确设置按钮的样式?
In Windows 8.1 XAML/C# app, how can I style the buttons precisely?
我是 Windows 8.1 开发的新手,如果这个问题的答案很明显,请原谅我,但我已经为此苦苦挣扎了一段时间,但无法让它发挥作用。情况是这样的:
我制作了一个 UserControl 来设置按钮的样式并向其添加其他功能。这是相关代码:
<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>
这是它在设计器中的样子:
您会注意到 Button 似乎在水平和垂直方向上都居中,而且很小。然而,当我点击代码中的 Button 时,Grid 的整个尺寸(在设计器中占据了整个 400 x 300 区域)都被 Button 填充了。
所以 Button 正在填充 Grid,Grid 正在填充区域。但是Button的Border和Background超小,在Button中间。更糟糕的是,它甚至不会拉伸以包含文本。这显然不是想要的外观。
我试图做什么?我想让 AliceBlue 按钮背景填满整个 Grid,填满整个 400 x 300 区域。我想要 'How can I make this bigger?' 蓝色内容字符串在将导致的大片 AliceBlue-ness 中垂直和水平居中。
我已经在 Grid 和 Button 上尝试了无数种 Margin、Padding、Height、Width 和其他属性规范的组合。没有任何东西影响按钮的 AliceBlue 区域的大小或位置。
显然我遗漏了什么。任何人都可以帮助我理解那是什么,以及如何格式化我的按钮(或一般的 UserControl)以使其看起来像我想要的那样?
在此先感谢您的帮助!
您是否尝试放入 TextBlock 子元素,而不是将字符串值分配给内容 属性?这可能会给你更多的控制嗨。 Button 具有您可以设置的 HorizontalContentAlignment 和 VerticalContentAlignment。然后可以独立修改按钮内子TextBlock的HorizontalAlignment和VerticalAlignment。
我是 Windows 8.1 开发的新手,如果这个问题的答案很明显,请原谅我,但我已经为此苦苦挣扎了一段时间,但无法让它发挥作用。情况是这样的:
我制作了一个 UserControl 来设置按钮的样式并向其添加其他功能。这是相关代码:
<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>
这是它在设计器中的样子:
您会注意到 Button 似乎在水平和垂直方向上都居中,而且很小。然而,当我点击代码中的 Button 时,Grid 的整个尺寸(在设计器中占据了整个 400 x 300 区域)都被 Button 填充了。
所以 Button 正在填充 Grid,Grid 正在填充区域。但是Button的Border和Background超小,在Button中间。更糟糕的是,它甚至不会拉伸以包含文本。这显然不是想要的外观。
我试图做什么?我想让 AliceBlue 按钮背景填满整个 Grid,填满整个 400 x 300 区域。我想要 'How can I make this bigger?' 蓝色内容字符串在将导致的大片 AliceBlue-ness 中垂直和水平居中。
我已经在 Grid 和 Button 上尝试了无数种 Margin、Padding、Height、Width 和其他属性规范的组合。没有任何东西影响按钮的 AliceBlue 区域的大小或位置。
显然我遗漏了什么。任何人都可以帮助我理解那是什么,以及如何格式化我的按钮(或一般的 UserControl)以使其看起来像我想要的那样?
在此先感谢您的帮助!
您是否尝试放入 TextBlock 子元素,而不是将字符串值分配给内容 属性?这可能会给你更多的控制嗨。 Button 具有您可以设置的 HorizontalContentAlignment 和 VerticalContentAlignment。然后可以独立修改按钮内子TextBlock的HorizontalAlignment和VerticalAlignment。