为什么我不能绑定边距属性
本文关键字:属性 绑定 不能 为什么 | 更新日期: 2023-09-27 18:30:15
我有一个矩形板,我想动态缩放。我可以设置矩形元素的高度和宽度属性。唯一不合作的属性是保证金。
我尝试将 ViewModel 中相同的属性边距绑定到宽度、高度和边距,它仅适用于宽度和高度。一旦我在矩形的边距属性上尝试它,加载窗口就会花费大量时间,并且它最终显示时根本没有边距。
有谁知道为什么会这样?
矩形:
<Rectangle Margin="{Binding ElementName=root, Path=DataContext.Margin}" Fill="White" Height="{Binding ElementName=root, Path=DataContext.Margin}" Width="{Binding ElementName=root, Path=DataContext.Margin}"></Rectangle>
财产:
private int _margin = 5;
public int Margin
{
get
{
return _margin;
}
}
我认为
您的问题可能与您绑定的方式有关,因为我无法重现该问题。 也许您可以发布更多代码来确定确切原因。 但是,以下内容对我有用:
XAML:
<Window.Resources>
<local:MyRectangle x:Key="myRectangle" />
</Window.Resources>
<Grid DataContext="{StaticResource myRectangle}">
<Rectangle Width="{Binding Path=MyWidth}" Height="{Binding Path=MyHeight}" Margin="{Binding Path=MyMargin}" />
</Grid>
类代码:
public class MyRectangle
{
public double MyMargin { get; set; }
public double MyWidth {get; set;}
public double MyHeight {get; set;}
public MyRectangle(double dHeight, double dWidth, double dMargin)
{
MyHeight = dHeight;
MyWidth = dWidth;
MyMargin = dMargin;
}
}
好的,我修好了!使用 int 或 double 作为边距似乎是一个问题。边距类型为厚度!无论如何,感谢您的所有帮助!
private Thickness _vakMargin;
public Thickness VakMargin
{
get
{
return _vakMargin;
}
set
{
_vakMargin = value;
}
}
我确实为所有 4 个边距设置了它:
new Thickness(someDouble);