2013-09-05 3 views
0

У меня есть доска прямоугольников, которую я хочу масштабировать динамически. Я могу установить свойства Height и Width элемента rectangle. Единственное свойство, которое не сотрудничает, - это маржа.Почему я не могу привязать свойство margin?

Я попытался привязать тот же самый запас свойства в моей модели 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; 
     } 
    } 
+0

Быстрый простой работы вокруг было бы просто использовать 'Border' вместо' Rectangle' сейчас. Я попытаюсь воссоздать то, что вы получили позже, когда у меня есть время, потому что это любопытно. –

ответ

0

Хорошо, я установил ее! Кажется, что проблема заключается в использовании int или double в качестве margin. Margin имеет тип Thickness! Спасибо всем за помощь!

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

я поставил его на все 4 полях с:

new Thickness(someDouble); 
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; 
    } 
} 
Смежные вопросы