Невозможно установить свойство для объекта «Идентичность», поскольку он находится в состоянии только для чтения - PullRequest
3 голосов
/ 09 июля 2009

Я получаю eroor из своего кода, я не могу отследить проблему / ошибку. вот мой бит кода ...

private void DoArrange()
    {
        Point center = new Point((this.Width - ItemSize) / 2, (this.Height - ItemSize) / 2);
        double radiusX = center.X;
        double radiusY = center.Y;
        double scale = ScalePerspective;

        for (int i = 0; i < Children.Count; i++)
        {
            UIElement item = Children[i];
            double radians = (double)item.GetValue(CarouselPanel.AngleProperty);

            Point p = new Point(
                                (Math.Cos(radians) * radiusX) + center.X,
                                (Math.Sin(radians) * radiusY) + center.Y
                               );

            if (item.RenderTransform == null)
            {
                item.RenderTransform = new MatrixTransform();
                item.RenderTransformOrigin = new Point(0.5, 0.5);
            }
            MatrixTransform mt = item.RenderTransform as MatrixTransform;
            double scaleMinusRounding = p.Y / (center.Y + radiusY);
            double scaleX = Math.Min(scaleMinusRounding + scale, 1.0);
            double scaleY = Math.Min(scaleMinusRounding + scale, 1.0);
            Matrix mx = new Matrix(scaleX, 0.0, 0.0, scaleY, 0.0, 0.0);

            *** mt.Matrix = mx; ***

            item.RenderTransform = mt;

            int zIndex = (int)((p.Y / base.Height) * 50);
            item.SetValue(Canvas.ZIndexProperty, zIndex);
            Rect r = new Rect(p.X, p.Y, ItemSize, ItemSize);
            item.Arrange(r);
        }
    }

Я снова отредактировал сообщение, .. ошибка возникла из *** mt.Matrix = mx; *** заявление ..

В чем может быть проблема, я использую приложение WPF (win).

Ответы [ 2 ]

5 голосов
/ 11 июля 2009

Вместо присвоения свойству матрицы только для чтения, попробуйте это:

item.RenderTransform = new MatrixTransform(mx);
2 голосов
/ 10 августа 2012

Свойство RenderTransform для UIElement изначально назначается как экземпляр MatrixTransform, свойства IsSealed и IsFrozen которого имеют значение true, а не нулевую ссылку. Это следует заметить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...