【问题标题】:Fill "corner radiuced" border填充“圆角”边框
【发布时间】:2011-11-09 08:33:54
【问题描述】:

希望我的问题足够简单 :) 我将 BORDER 作为具有一些角半径的主容器。它里面有一个网格,如果我想为网格设置一些背景颜色 - 角落外面有一个丑陋的填充部分变成......

那么,我怎样才能将我的 BORDER 设置为一个全局容器,并且里面的所有内容都保留在里面?

谢谢!

【问题讨论】:

    标签: wpf visual-studio-2010 xaml


    【解决方案1】:

    查看以下问题:How to make the contents of a round-cornered border be also round-cornered?

    ClippingBorder 来自答案在这方面做得很好。这是常规BorderClippingBorder 之间的比较。

    <StackPanel Orientation="Horizontal">
        <Border CornerRadius="20,20,20,20"
                BorderThickness="4"
                BorderBrush="Black"
                Width="50"
                Height="50">
            <Grid Background="Red"/>
        </Border>
        <controls:ClippingBorder CornerRadius="20,20,20,20"
                                 BorderThickness="4"
                                 BorderBrush="Black"
                                 Width="50"
                                 Height="50"
                                 Margin="20,0,0,0">
            <Grid Background="Red"/>
        </controls:ClippingBorder>
    </StackPanel>
    

    【讨论】:

    • 我对这种方法有疑问:如果您可以通过将 Border.Background 属性设置为 Red 来获得相同的结果,为什么还要经历所有这些麻烦?是否还有其他与此方法解决的背景颜色无关的情况?
    • @Murven:这当然只是一个例子。它解决的问题是Border 的内容不能超出Border。例如,您想显示带有圆角和边框的地图或照片
    • 我明白你的意思,我为那个 +1!
    • 真的很棒!谢谢 :) 所以,我唯一害怕的想法是 - 开头的评论是 ClippingBorder 会抑制其孩子的任何数据绑定或动画....希望我能解决它:)
    • @ArtemMakarov:这仅适用于 Clip 属性的孩子,所以应该没有任何问题 :)
    【解决方案2】:

    如果您希望背景颜色填充圆角,则需要在边框本身上设置背景属性,而不是在其中的网格上。现在,如果您只想让网格完全位于边框内,请在网格中设置一个边距,以补偿圆角半径:

    <Border CornerRadius="10" 
            BorderBrush="Black" 
            BorderThickness="5" 
            Background="Green">
        <Grid Background="Red" 
              Margin="2.5">
    
        </Grid>
    </Border>
    

    【讨论】:

    • 我不认为这是唯一的解决方案 :) 它必须独立于角半径并填充整个区域,而不仅仅是矩形..
    猜你喜欢
    • 1970-01-01
    • 2016-05-24
    • 2022-01-24
    • 2015-08-23
    • 2014-06-16
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多