Как контролировать Z порядок сеток - PullRequest
0 голосов
/ 24 июня 2011

У меня есть следующий код:

        TextBlock tmp = new TextBlock
        {
            Text = displayText,
            Foreground = new SolidColorBrush(Colors.Red),
            HorizontalAlignment = HorizontalAlignment.Center,
            VerticalAlignment = VerticalAlignment.Center,
            FontSize = 30
        };
        Grid grd = new Grid();
        grd.Children.Add(tmp);
        // grd.Background = new SolidColorBrush(Colors.LightGray);
        Viewbox vb = new Viewbox();
        vb.Child = grd;
        vb.Width = width;
        vb.Height = height;
        DrawingCvs.Children.Add(vb);
        Canvas.SetLeft(vb, xpos);
        Canvas.SetTop(vb, ypos);
        Canvas.SetZIndex(grd, 1000);

        // we need a second grid for cosmetic reasons. Due to
        // how the viewbox works, when we resize we lose the full
        // width of the grid which has a textblock in it
        Grid cosmeticGrd = new Grid
                          {
                              Width = width,
                              Height = height,
                              Background = new SolidColorBrush(Colors.LightGray)
                          };
        DrawingCvs.Children.Add(cosmeticGrd);
        Canvas.SetLeft(cosmeticGrd, xpos);
        Canvas.SetTop(cosmeticGrd, ypos);
        Canvas.SetZIndex(grd, 0);

Я хочу, чтобы сетка, добавленная первой в коде, была выше сетки, добавленной второй. Что не так с моей настройкой свойства Z-Index здесь? Или это что-то еще?

InB4 Изменить порядок добавления их в коде - да, я понимаю это, но для понимания хочу понять свойство ZIndex.

1 Ответ

1 голос
/ 24 июня 2011

Ваш первый SetZindex звонок:

Canvas.SetZIndex(grd, 1000);

неправильно применяет настройку к Grid вместо Viewbox. Должно быть:

Canvas.SetZIndex(vb, 1000);

потому что Viewbox является потомком Canvas.

Аналогично, ваш второй SetZIndex звонок:

Canvas.SetZIndex(grd, 0);

применяется неправильно Grid. Должно быть:

Canvas.SetZIndex(cosmeticGrd, 0);

Таким образом, присоединенное свойство Canvas.ZIndex влияет на порядок Canvas children.

...