0
我有一个自定义的装饰。 (其示出了图像的同时拖动一个的UIElement)装饰者,不能设置不透明度,边框,背景wpf
现在,这种装饰器是透明的,但我希望它是不透明的。 我也不知道如何设置它的背景和其他好看的东西 像一个边框。
这是我的自定义装饰器:
/// <summary>
/// Adorner, to show a picture of the listbox-item we are dragging.
/// </summary>
public class DraggedAdorner : Adorner
{
private readonly ContentPresenter draggedItemPresenter;
private readonly AdornerLayer draggedItemAdornerLayer;
private double left;
private double top;
/// <summary>
/// Initializes a new adorner, which will display the dragged listbox-item.
/// </summary>
/// <param name="listBoxItem">ListBoxItem, which we want to show while dragging.</param>
/// <param name="listBox">ListBoxItem, which we want to show while dragging.</param>
/// <param name="adornerLayer">Presentation layer for the adorner.</param>
/// <param name="width"></param>
public DraggedAdorner(ListBoxItem listBoxItem, ListBox listBox, AdornerLayer adornerLayer, double width, double height)
: base(listBox)
{
draggedItemAdornerLayer = adornerLayer;
draggedItemPresenter = new ContentPresenter
{
Content = listBoxItem,
Width = width,
Height = height
};
draggedItemAdornerLayer.Add(this);
}
/// <summary>
/// Sets the position of the dragged adorner.
/// </summary>
/// <param name="newLeft">new left position of the adorner</param>
/// <param name="newTop">new top position of the adorner</param>
public void SetPosition(double newLeft, double newTop)
{
// -1 and +13 align the dragged adorner with the dashed rectangle that shows up
// near the mouse cursor when dragging.
left = newLeft;
top = newTop;
if (draggedItemAdornerLayer != null)
{
draggedItemAdornerLayer.Update(AdornedElement);
}
}
protected override Size MeasureOverride(Size constraint)
{
draggedItemPresenter.Measure(constraint);
return draggedItemPresenter.DesiredSize;
}
protected override Size ArrangeOverride(Size finalSize)
{
draggedItemPresenter.Arrange(new Rect(finalSize));
return finalSize;
}
protected override Visual GetVisualChild(int index)
{
return draggedItemPresenter;
}
protected override int VisualChildrenCount
{
get { return 1; }
}
public override GeneralTransform GetDesiredTransform(GeneralTransform transform)
{
GeneralTransformGroup result = new GeneralTransformGroup();
result.Children.Add(base.GetDesiredTransform(transform));
result.Children.Add(new TranslateTransform(left, top));
return result;
}
/// <summary>
/// Removes the this adorner form the adornerlayer.
/// </summary>
public void Detach()
{
draggedItemAdornerLayer.Remove(this);
}
}
谁能帮助我?
代码将是非常赞赏。 – Maximus
你现在可以帮我吗?:-) – Toni