我有以下xaml:
<UserControl x:Class="MyCompany.MyApp.MySubModule.Views.MyView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="43" d:DesignWidth="115">
<Grid>
<Border Margin="20, 0, 0, 0" CornerRadius="0, 10, 10, 0" BorderBrush="Transparent" BorderThickness="0">
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStopCollection>
<GradientStop Color="#0066CC" Offset="0" />
<GradientStop Color="#0075EA" Offset="1" />
</GradientStopCollection>
</LinearGradientBrush>
</Border.Background>
</Border>
</Grid>
</UserControl>
我期望的是Border
没有厚度(即不可见)。但实际上你可以看到它。为什么会这样,我怎么让它消失?
答案 0 :(得分:3)
代码中的边框不可见。可能你已经将usercontrol包裹在另一个边框或带边框的控件中。
或许你想到了背景?设置边框的Background-property填充border-element覆盖的区域。要隐藏整个元素,请将边框的Visibility - 属性设置为隐藏或折叠,或使用透明画笔作为边框背景。
BorderBrush和BorderThickness仅用于绘制边框(控件)。然而,Border-control是一个装饰控件,它有自己的区域(它的子控件需要的区域)。
答案 1 :(得分:1)
这似乎是特定于Visual Studio设计器的,它不会出现在Blend中或者您实际使用该控件。我把它们中的一些放在StackPanel中,它们之间没有间隙。
答案 2 :(得分:0)
我必须承认我自己使用了Visibility
属性,例如
<Border Visibility="Visibility.Hidden" />
答案 3 :(得分:0)
我知道这是一个老问题,但我刚刚遇到了同样的问题而且解决方案(对我而言)与那些发布的问题有所不同。
假的边界&#34; (对我来说)是由布局引擎的抗锯齿alghoritms引起的。这导致边界的某些线条变得平滑&#34;并渲染多个像素(即使它被认为是不可见的,通常还会留下一些文物)。
解决方案:通过将根元素的UseLayoutRounding属性设置为&#34; True&#34;,确保将布局的测量值四舍五入为整个像素。 (MSDN声明它默认设置为true,但似乎并不一定如此)。
更详细的解释和示例:http://blogs.msdn.com/b/text/archive/2009/08/27/layout-rounding.aspx