c# – WPF Dashed Border Control

我想创建一个继承自Border的控件,并且只允许我特定一个strokeDashArray来破坏边界线.

我不想使用’谷歌’建议的黑客,即矩形等,因为我想要边境控制给予的灵活性.

但是,我没有创建自定义控件的经验,也不知道从哪里开始?

你能指出我正确的方向吗?

谢谢!

解决方法

仍然不是最佳的,但如何使用Matt Hamilton作为VisualBrush链接解决方

使用VisualBrush与虚线矩形和SolidColorBrush进行比较

<Border BorderThickness="3,2,1,0" CornerRadius="10">
    <Border.BorderBrush>
        <VisualBrush>
            <VisualBrush.Visual>
                <Rectangle strokeDashArray="1.0 1.0"
                           stroke="Red"
                           strokeThickness="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}},Path=BorderThickness,Converter={StaticResource ThicknessMaxConverter}}"
                           RadiusX="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}},Path=CornerRadius.TopRight}"
                           RadiusY="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}},Path=CornerRadius.BottomLeft}"
                           Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}},Path=ActualWidth}"
                           Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}},Path=ActualHeight}"/>
            </VisualBrush.Visual>
        </VisualBrush>
    </Border.BorderBrush>
</Border>

ThicknessMaxConverter

public class ThicknessMaxConverter : IValueConverter
{
    public object Convert(object value,Type targettype,object parameter,Sy@R_404[email protected] culture)
    {
        Thickness thickness = (Thickness)value;
        double horizontalMax = Math.Max(thickness.Left,thickness.Right);
        double verticalMax = Math.Max(thickness.Top,thickness.Bottom);
        return Math.Max(horizontalMax,verticalMax);
    }
    public object ConvertBack(object value,Sy@R_404[email protected] culture)
    {
        throw new NotImplementedException();
    }
}

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...