2011-11-09 72 views
3

希望我的问题很容易:)我有BORDER作为一些角落半径的主要容器。它里面有一个GRID,如果我想设置一些背景颜色到网格 - 有一个丑角填充部分以外的角落变成...填充“corner radiuced”边框

那么,我该如何设置我的BORDER像一个全局容器里面的东西都在里面?

谢谢!

回答

6

请参见以下问题:How to make the contents of a round-cornered border be also round-cornered?

ClippingBorder从答案呢在这方面做得非常好。以下是常规BorderClippingBorder之间的比较。

enter image description here

<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> 
+0

我有一个关于这种方法的问题:为什么如果通过将Border.Background属性设置为Red可以获得相同的结果,将会经历所有这些麻烦?有没有其他的情况,这种方法解决了与背景颜色无关的问题? – Murven

+0

@Murven:这当然只是一个例子。它解决的问题是'Border'的内容不能超出'Border'。例如,你想显示一张带有圆角和边框的地图或照片 –

+0

我明白你的意思,对我来说是+1。 – Murven

0

如果您想要背景色填充圆角,您需要在边框本身设置背景属性,而不是其中的网格。现在,如果你只是想在电网在边框内完全设置在网格保证金用于补偿圆角半径:

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

    </Grid> 
</Border> 
+0

我不认为这是:)它必须是独立的弯道半径和填充整个区域,不仅矩形唯一的解决办法.. –