Я пытаюсь создать наложение в wpf (с затемнением фона), подобное тем, которые вы можете найти в Интернете для всплывающих изображений. Я хотел бы, чтобы его можно было повторно использовать более чем в одной части приложения с разными типами контента.
это временный код конструктора класса adorner (просто попробовать)
private readonly Grid _grid = new Grid();
public DarkOverlayAdorner(UIElement adornedElement, Object content) :
base(adornedElement)
{
_grid.Background = new SolidColorBrush(Color.FromArgb(99, 0, 0, 0));
IsHitTestVisible = true;
var visual = content as UIElement;
if (visual != null)
_grid.Children.Add(visual);
}
Кроме того, в классе (конечно) у меня есть овверриды MeasureOverride и ArrangeOverride, чтобы придать украшению правильный размер украшенного элемента, GetVisualChild и VisualChildCount...
Проблема здесь в том, что декоративный элемент отображается правильно, но к нему не применяются никакие события или поведение. Например:
AdornerLayer layer = AdornerLayer.GetAdornerLayer(textBoxProva);
layer.Add(new DarkOverlayAdorner(textBoxProva, new Button{Content = "prova"}));
Кнопка здесь показана, но я не могу нажать кнопку, и никакие эффекты при наведении мыши на кнопку не применяются. Я до сих пор не могу понять проблему.