【问题标题】:Create a Border with Different Edges / Sides创建具有不同边/边的边框
【发布时间】:2012-12-10 22:58:53
【问题描述】:

如何创建具有不同边缘的边框。不必完全相同。只是想知道如何为边框设置四种不同的样式

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    我认为没有办法控制每一边的边框样式。但是,您可以将 4 个边框彼此叠放(或在彼此内),每个边框具有所需样式的对应边和宽度为 0 的其他边

    【讨论】:

    • 谢谢,我考虑过将厚度设置为0,但我还没有尝试过。只是想知道有没有其他方法可以做到这一点,但仍然非常感谢!
    • @dongx 我不认为有任何其他方式,如果您在混合中破坏任何第三方控件,例如telerik 或 devexpress,他们就是这样做的。通常边界内边界,有点难看,但可以解决问题。如果您满意,请将此标记为答案。
    【解决方案2】:

    你不能用边框来做,但你可以创建一个具有相同样式的内容控件。

    <Style x:Key="DiffBorderStyle" TargetType="{x:Type ContentControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ContentControl}">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <Rectangle 
                            Fill="Black" Width="1" 
                            Grid.RowSpan="3"/>
    
                            <Rectangle 
                            Fill="Blue" Width="1" 
                            Grid.Column="2"
                            Grid.RowSpan="3"/>
    
                            <Rectangle 
                            Fill="Red" Height="1" 
                            Grid.ColumnSpan="3"/>
    
                            <Rectangle 
                            Fill="Black"  Height="1" 
                            Grid.Row="2"
                            Grid.ColumnSpan="3"/>
    
                            <ContentPresenter Grid.Column="1" Grid.Row="1"/>
                        </Grid>
    
    
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    

    您可以对每个矩形进行风格化,也可以使用 Line 代替矩形。

    希望对你有帮助..

    【讨论】:

    • 感谢您的回答,但出于某些原因,我需要边框样式。
    • @dongx 您不能随意更改边框样式。但是为什么你只需要使用边框呢?
    猜你喜欢
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    相关资源
    最近更新 更多