Чтобы ответить на мой второй вопрос,
Есть ли способ изменить слой/уровень, на котором можно рисовать украшения?
Кажется, я нашел решение. Просто поместите элемент AdornerDecorator вокруг уровня, на котором необходимо отобразить декоративные элементы. Любой элемент управления, требующий слоя декоратора, будет использовать этот элемент AdornerDecorator для размещения своих декораторов.
Здесь я переместил украшения на другой уровень, используя следующий фрагмент кода.
<Window x:Class="CustomAdornerLayer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
<StackPanel Background="Yellow" Width="Auto">
<Button>Button3</Button>
</StackPanel>
<AdornerDecorator>
<Grid>
<AdornerDecorator>
<Button x:Name="button1" Margin="70,73,265,158">Button1</Button>
</AdornerDecorator>
<AdornerDecorator>
<Button x:Name="button2" Margin="87,51,248,180">Button2</Button>
</AdornerDecorator>
</Grid>
</AdornerDecorator>
</Grid>
While the AdornerLayer is still queried in the same way,
AdornerLayer layer1 = AdornerLayer.GetAdornerLayer(button1);
layer1.Add(new MyAdorner(button1));
AdornerLayer layer2 = AdornerLayer.GetAdornerLayer(button2);
layer2.Add(new MyAdorner(button2));
Пожалуйста, поправьте меня, если я ошибаюсь.
person
sudarsanyes
schedule
03.11.2012