在c# WPF应用程序中设置边距
本文关键字:置边距 应用程序 WPF | 更新日期: 2023-09-27 18:05:33
如何在WPF中设置控件的边距?我以前使用的是WinForms,现在希望转换成WPF。
所以,我创建了一个新的WPF应用程序,删除了主窗口中的网格,添加了一个画布,并在画布上添加了两个标签。我想在标签周围设置一个边距,但是一旦我设置了它,比如说20,然后尝试移动它们来检查它是否有效,Label的Margin属性将值重置为0。我还能像在WinForms中那样在WPF中这样做吗?
谢谢!
编辑:希望这是你感兴趣的代码。
因此,我在属性选项卡中更改了标签的边距值。如下所示:
<Window x:Class="WpfApplication1.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:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Canvas HorizontalAlignment="Left" Height="173" Margin="87,62,0,0" VerticalAlignment="Top" Width="205" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<Label x:Name="label" Content="Label" Canvas.Left="51" Canvas.Top="47" Margin="20"/>
<Label x:Name="label1" Content="Label" Canvas.Left="104" Canvas.Top="125" Margin="20"/>
</Canvas></Window>
然后,我拖动一个标签,它会自动变成这样:
<Window x:Class="WpfApplication1.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:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Canvas HorizontalAlignment="Left" Height="173" Margin="87,62,0,0" VerticalAlignment="Top" Width="205" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<Label x:Name="label" Content="Label" Canvas.Left="51" Canvas.Top="47" Margin="20"/>
<Label x:Name="label1" Content="Label" Canvas.Left="129" Canvas.Top="101"/>
</Canvas> </Window>
如果我拖动另一个标签,它也会"重置"为零
看起来问题是当标签在画布内。我添加了网格的例子,它像预期的那样工作,当一个标签被移动时,Margin属性被重新计算。
<Grid>
<Label x:Name="label1" Content="Label" Margin="20" VerticalAlignment="Top" Width="200"/>
</Grid>
或者,您可以使用Padding属性,如果这对您有用的话。无论你如何移动标签,它都将保持在20。
<Canvas HorizontalAlignment="Left" Height="173" Margin="87,62,0,0" VerticalAlignment="Top" Width="205" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<Label x:Name="label" Content="Label" Canvas.Top="40" Canvas.Left="21" Padding="20"/>
<Label x:Name="label1" Content="Label" Canvas.Left="32" Canvas.Top="125"/>
</Canvas>
但是,我强烈建议只编辑源代码,不要触摸WPF设计器中的元素。