Как получить прямоугольник с макетом, рассчитанным по модульному тесту? - PullRequest
0 голосов
/ 27 июля 2011

Я собираюсь написать некоторые прикрепленные свойства, как предложено в Перенос свойств только для чтения обратно в ViewModel

Я написал следующий модульный тест:

    private const double Dimension = 10.0;

    [Test]
    [RequiresSTA]
    public void Gets_ActualWidth()
    {
        var rectangle = new Rectangle() { Width = Dimension, Height = Dimension };
        double actualWidthMeasurement = Measurements.GetActualWidth(rectangle);
        Assert.That(actualWidthMeasurement, Is.EqualTo(Dimension));
    }

Хотя это слишком наивно, прямоугольник имеет ActualWidth 0, потому что макет не рассчитан.

Есть ли простой способ получить прямоугольник с вычисленным макетом.

Я попытался добавить его в StackPanel и вызвать Arrange (новый Rect (0,0,20,20)), но все еще получил прямоугольник с ActualWidth / ActualHeight = 0.0d.


РЕШЕНИЕ

    [Test]
    [RequiresSTA]
    public void Gets_ActualWidth()
    {
        var rectangle = new Rectangle() { Width = Dimension, Height = Dimension};
        rectangle.Measure(new Size(20, 20));
        rectangle.Arrange(new Rect(0, 0, 20, 20));
        double actualWidthMeasurement = Measurements.GetActualWidth(rectangle);
        Assert.That(actualWidthMeasurement, Is.EqualTo(Dimension));
    }

1 Ответ

2 голосов
/ 27 июля 2011

Я не вижу, чтобы вы называли Меру. Это должно быть вызвано до Arrange, иначе Arrange потерпит неудачу, так как все имеет DesiredSize 0,0.

myStackPanel.Measure(new Size(20, 20));
myStackPanel.Arrange(new Rect(0, 0, 20, 20));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...