为什么我不能绑定保证金属性?

时间:2013-09-05 16:27:57

标签: c# xaml data-binding properties margin

我有一块矩形板,我想动态扩展。我可以设置矩形元素的高度和宽度属性。唯一不合作的财产是保证金..

我尝试将ViewModel中相同的属性边距绑定到宽度,高度和边距,它只适用于宽度和高度。一旦我在矩形的margin属性上尝试它,它需要花费很多时间来加载窗口并且它最终显示没有任何边距..

有谁知道为什么会这样?

矩形:

<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;
        }
    }

2 个答案:

答案 0 :(得分:0)

我认为您的问题可能与您绑定的方式有关,因为我无法重现该问题。也许您可以发布更多代码来确定确切原因。但是,以下内容对我有用:

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;
    }
}

答案 1 :(得分:0)

好吧,我修好了! 使用int或double作为边距似乎是一个问题。边距是厚度类型!无论如何,谢谢你的帮助!

private Thickness _vakMargin;
public Thickness VakMargin
{
    get
    {
        return _vakMargin;
    }
    set
    {
        _vakMargin = value;
    }
}

我确实为所有4个边距设置了它:

new Thickness(someDouble);