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