我正在尝试为简单的WPF计算器应用程序创建按钮网格,但我无法正确绘制按钮。
我在Button(btnPlusMinus)中使用了一个Grid(grdPlusMinus) - 在整个控件网格(grdControls)中 - 这样我就可以在它的顶部制作一个带有简单Label的椭圆Button。椭圆应该填充Button的可见部分。
使用下面的代码时,椭圆的底部和右侧是"切断"无论窗口如何调整大小。椭圆始终是成比例的,但它永远不会完全显示。 当我将grdPlusMinus的宽度和高度重置为自动(通过VS UI而不是代码)时,它们都被设置为1,结果是grdPlusMinus - 因此其中的所有内容 - 缩小为单个像素。
我可能在基层做一些非常愚蠢的事情,但我无法想象它是什么。 我尝试了所有不同类型的绑定和设置 - 例如绑定到宽度而不是ActualWidth等 - 但我无法弄清楚我做错了什么。 我认为这可能是因为利润率,但完全取消保证金并没有多大改变。
有人能指出我一定做错了吗? (我尝试了Kaxaml中的XAML变体并遇到了同样的问题。)
如果有更好的做法 - 整体而言 - 我想要做的事情,那么我想听听,但我想知道这有什么问题。在我尝试其他任何事情之前 (我最终的意图是将每个按钮的高度和宽度设置为按钮的最小尺寸,以便它始终显示为按钮中心的圆圈,但以后会显示一些内容,除非这个额外的信息可以提供更好的解决方案。)
<Window x:Class="Calc.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Calc"
mc:Ignorable="d"
Title="MainWindow" Height="651.5" Width="525" WindowStartupLocation="CenterScreen">
<Grid x:Name="grdControls">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button x:Name="btnPlusMinus" Grid.Row="5" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="{x:Null}" Margin="4">
<Grid x:Name="grdPlusMinus" Width="{Binding ActualWidth, ElementName=btnPlusMinus, Mode=OneWay}" Height="{Binding ActualHeight, ElementName=btnPlusMinus, Mode=OneWay}">
<Ellipse x:Name="ellipse" Stroke="#FF39A8DC" Fill="#FFA0D2E2"/>
<Label x:Name="label" Content="XXX" HorizontalAlignment="Center" VerticalAlignment="Center" VerticalContentAlignment="Center" Foreground="#FF0A263A" HorizontalContentAlignment="Center"/>
</Grid>
</Button>
</Grid>
</Window>
答案 0 :(得分:0)
对不起,我无法解释为什么会发生这种情况,但我发现用这个替换按钮线可以达到理想的效果:
<Button x:Name="btnPlusMinus" Grid.Row="5" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="{x:Null}" Padding="-5">
注意边距由padding =“ - 5”
代替答案 1 :(得分:0)
这就像问我为什么在我下飞机时我的雨伞不起作用。您的问题的简单答案不打算以这种方式使用。 XAML拥有有史以来最好的定位系统之一,因此使用它很容易(性能可能不太好,但你不必担心它)。
getSkills
以下是grid的工作原理。