C# 在包裹面板内的坐标处手动绘制

C# 在包裹面板内的坐标处手动绘制,c#,wpf,image,wrappanel,C#,Wpf,Image,Wrappanel,在我的应用程序中,我有几个(!)(wrap)面板,其中包含小缩略图(Image)(缩略图是动态生成的,因此没有xaml)。我希望通过在缩略图上绘制“发光”边框来显示我“选择”的缩略图 为此,我编写了一个“selectElement”函数: private void SelectElement(FrameworkElement elem) { if (elem == _selectedElement) return; _selectedElement = elem; var

在我的应用程序中,我有几个(!)(wrap)面板,其中包含小缩略图(
Image
)(缩略图是动态生成的,因此没有xaml)。我希望通过在缩略图上绘制“发光”边框来显示我“选择”的缩略图

为此,我编写了一个“
selectElement
”函数:

private void SelectElement(FrameworkElement elem)
{
    if (elem == _selectedElement) return;
    _selectedElement = elem;
    var parentPanel = _selectionBorder?.Parent as Panel;
    if (parentPanel != null)
    {
        parentPanel.Children.Remove(_selectionBorder);
    }
    _selectionBorder = null;
    if (_selectedElement == null) return;
    _selectionBorder = new Border
    {
        BorderThickness = new Thickness(10),
        BorderBrush = Brushes.Black
    };

    var p = _selectedElement.Parent as Panel;
    if (p == null) return;
    p.Children.Add(_selectionBorder);
    var m = _selectedElement.Margin;
    _selectionBorder.Margin = m;
}
它将从
图像的
鼠标向下
事件调用; 现在的问题是:即使我将边框的边距设置为与元素相同,边框还是添加到所有元素之后。是否可以“绕过”此边界的默认wrappanel行为或者是否有可能在我的缩略图周围画一个“边框”
Image
在不实际增加图像大小的情况下(“半透明边框”应与图像侧面混合)

PS:是的,我知道这意味着当缩略图接近包装纸的边框时,边框被“切割”,但我同意。

听起来你想要一个新的。WPF提供了一个可以显示装饰器的层,而不是被装饰元素的可视树的一部分。堆栈溢出上已经有大约个装饰程序。你的问题太宽泛了。查看可用信息,如果您有特定问题,请发布一个新问题,其中包括您尝试过的内容以及具体需要帮助的内容。@PeterDuniho简单地说,“您需要一个装饰工”就足以回答我的问题,让我了解其余问题。-只是谷歌搜索,“元素周围的边界”等都不能接近“装饰者”这个词。谢谢