0

I have a board of rectangles which I want to scale dynamically. I can set the Height and Width properties of the rectangle element. The only property that doesn't cooperate is the margin..

I tried binding the same property margin in my ViewModel to either width, height and margin and it only works well with the width and height. As soon as I try it on the margin property of the rectangle it takes a lot of time to load the window AND it eventually shows up with no margin at all..

Does anyone know why this is happening?

Rectangle:

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

Property:

private int _margin = 5;
    public int Margin
    {
        get
        {
            return _margin;
        }
    }
4

2 に答える 2

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;
    }
}
于 2013-09-05T18:14:18.833 に答える
0

よし、直した!マージンとして int または double を使用するのは問題のようでした.. マージンはタイプ Thickness です! とにかく助けてくれてありがとう!

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

4つのマージンすべてに次のように設定しました:

new Thickness(someDouble);
于 2013-09-07T19:39:09.320 に答える