2009-06-26 628 views

回答

65

你是誤以爲Rectangle不支持此:

<Rectangle StrokeDashArray="0.5 1.0 0.3" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10"/> 

enter image description here

+0

您的圖片鏈接似乎已經打破。如果您仍然有原始圖像,請將其重新上傳到stack.imgur,或者編輯您的答案以使其在沒有圖像的情況下工作。謝謝。 – 2015-07-27 09:48:28

8

WPF邊境控制不支持虛線。 如果您想爲控件應用虛線/虛線邊框,則可以簡單地用裝飾器裝飾控件。

這是示例裝飾類。這是任何UIelement的通用裝飾器。

class DottedLineAdorner : Adorner 
{ 
    public UIElement AdornedElement { get; set; } 

    public DottedLineAdorner(UIElement adornedElement) : base(adornedElement) 
    { 
     AdornedElement = adornedElement; 
    } 

    protected override void OnRender(DrawingContext drawingContext) 
    { 
     Size eltSize = (AdornedElement as FrameworkElement).DesiredSize; 
     Pen pen = new Pen(Brushes.Blue, 2) { DashStyle = DashStyles.DashDot }; 
     drawingContext.DrawRoundedRectangle(null, pen, new Rect(0, 0, eltSize.Width, eltSize.Height), 10, 10); 
    } 
} 

我在我的xaml中有一個簡單的文本塊,它包含在一個名爲'LayoutGrid'的網格中。現在

,邊框可以在代碼中應用的背後

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     AdornerLayer.GetAdornerLayer(LayoutGrid).Add(new DottedLineAdorner(textblock)); 
    }