Adorner를 DateTimePicker control에 추가했지만 다른 컨트롤 상단에는 표시되지 않습니다. 왜? 어떻게 수정해야합니까?다른 모든 것들 위에 WPF Adorners를 그리는 방법은 무엇입니까?
내 XAML은 현재 다음과 같이 진행됩니다
이<UserControl x:Class="IntelliMap.WPF.DateTimePicker"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:wpftc="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
mc:Ignorable="d">
...
<AdornerDecorator>
<Grid>
...
<TextBox x:Name="DateDisplay"
HorizontalAlignment="Stretch" ...>
</TextBox>
...
</Grid>
</AdornerDecorator>
</UserControl>
adorner 자체가 UserControl에서 별도의 클래스 생성자에 추가 :
public DateTimePicker()
{
InitializeComponent();
...
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(DateDisplay);
if (adornerLayer != null)
{
adornerLayer.Add(_upDownBtns = new TextBoxUpDownAdorner(DateDisplay));
_upDownBtns.Click += (textBox, direction) => { OnUpDown(direction); };
}
}
'AdornerDecorator'가 없으면 'GetAdornerLayer'가 null을 반환하기 때문에 AdornerDecorator가 있습니다. – Qwertie
아, 생성자 대신 컨트롤의 activate 이벤트에서 adorner 설정을 수행하십시오. GetAdornerLayer가 창 AdornerLayer를 가져 오기 전에 컨트롤이 화면에 있어야합니다. –
어떤 이벤트가 발생 했습니까? UserControl에는 Activate 이벤트가 없습니다. 나는'Loaded'를 시도했지만,'GetAdornerLayer'는 여전히 그 이벤트에서 null을 반환합니다. – Qwertie