silverlight 边框虚线

本文介绍了一种在 WPF 中实现动态调整边框大小及样式的方案,通过绑定实际宽度和高度来实现边框随内容变化而变化的效果,并提供了一个通用样式模板。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    <Grid>
<Grid HorizontalAlignment="Center" VerticalAlignment="Center" x:Name="g">
<Canvas>
<Rectangle RadiusX="5" RadiusY="5"
Width="{Binding ElementName=g, Path=ActualWidth}"
Height="{Binding ElementName=g, Path=ActualHeight}"
Stroke="Blue" StrokeDashArray="5,2,1,2" StrokeThickness="2"/>
</Canvas>
<TextBlock Margin="10,7,10,7" Text="aaa" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Grid>


效果图:

image

 

 

公共样式:

<Style TargetType="ContentControl" x:Key="myBorder">

    <Setter Property="Template">

        <Setter.Value>

            <ControlTemplate>

                <Grid x:Name="g"

                      Background="{TemplateBinding ContentControl.Background}"

                      Width="{TemplateBinding ContentControl.Width}"

                      Height="{TemplateBinding ContentControl.Height}">

                    <Canvas>

                        <Rectangle RadiusX="5" RadiusY="5"

                                   Width="{Binding ElementName=g, Path=ActualWidth}"

                                   Height="{Binding ElementName=g, Path=ActualHeight}"

                                   Stroke="{TemplateBinding ContentControl.BorderBrush}"

                                   StrokeDashArray="5,2,1,2"

                                   StrokeThickness="{TemplateBinding ContentControl.BorderThickness}"/>

                    </Canvas>

                    <ContentPresenter Margin="5" Content="{TemplateBinding ContentControl.Content}"/>

                </Grid>

            </ControlTemplate>

        </Setter.Value>

    </Setter>

</Style>


使用示例:

<ContentControl Margin="10" HorizontalAlignment="Center" VerticalAlignment="Center"

                BorderThickness="2" BorderBrush="Blue" Style="{StaticResource myBorder}">

    <TextBlock Text="abc"/>

</ContentControl>


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值