: Идентификация скрытых элементов - PullRequest
0 голосов

У меня есть макет XAML:

<f:FlipPanel x:Name="flipper" Height="90" Width="90">
    <f:FlipPanel.Front>
        <Canvas x:Name="Empty_Frame" Visibility="Visible">
            <Path Stroke="#FFBCC2AB" StrokeThickness="2">
                <Path.Data>
                    <GeometryGroup FillRule="EvenOdd">

                    ... <!-- There are a lot of geometric elements -->

        </Canvas>
    </f:FlipPanel.Front>
    <f:FlipPanel.Back>

    ... <!-- There are a lot of geometric elements -->

    </f:FlipPanel.Back>
    </f:FlipPanel>

FlipPanel - это сложный компонент, взятый из сторонней библиотеки. Во время выполнения мне нужно заменить <Canvas> другим набором элементов. «Поиск-удаление» кода не работает:

var ecanvas = flipper.Children.OfType<Canvas>().FirstOrDefault(x => x.Name == "Empty_Frame");
flipper.Children.Remove(ecanvas);

Причина кроется в скрытом промежуточном элементе <Viewport3D>, который расположен на панели.

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

1 Ответ

0 голосов
/ 01 мая 2020

Я не знаю, как FlipPanel работает, но на самом деле вы не добавляете Canvas в его коллекцию Children, а помещаете его в FlipPanel свойство 'Front'. Если вы хотите удалить холст, попробуйте следующее:

flipper.Front = null;

И чтобы поместить туда новый элемент:

flipper.Front = myNewElement;
...