在WPF中的网格上放置边框

时间:2012-11-02 14:47:16

标签: .net wpf user-controls border

有没有办法在Border上放置Grid,而不会将GridBorder元素包围在一起?

<Border Margin="{Binding ElementName=thisUserControl, Path=PrintMargin}"
        BorderThickness="{Binding ElementName=thisUserControl, 
                             Path=PrintMarginThickness}"
        BorderBrush="LightGray">
    <Grid x:Name="mainGrid"
          Background="{Binding ElementName=thisUserControl, Path=Background}" />
</Border>

我可以在网格上使用像“BitmapEffect”这样的东西吗? 我只需要在我的WpfUserControl上显示或不显示名为“PrintMargin”的边框......

此边框应该是否可见,也许我需要控制其厚度,也许颜色(刷子)......

2 个答案:

答案 0 :(得分:1)

按照你提到的方式(网格边框)看不出有什么问题,但如果你真的想要,你可以添加Border作为Grid中的最后一个元素:

<Grid>
    .. other elements ..
    <Border BorderBrush="DeepPink" BorderThickness="1" />
</Grid>

答案 1 :(得分:1)

几周前我为Button做了这个,也许你可以让样本适应Grid对照?

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border Name="border" 
                        BorderThickness="{TemplateBinding BorderThickness}"
                        Padding="{TemplateBinding Padding}" 
                        BorderBrush="{TemplateBinding BorderBrush}" 
                        CornerRadius="5"
                        Margin="{TemplateBinding Margin}"
                        Background="{TemplateBinding Background}">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

编辑:我想你必须使用Panel方法而不是ContentPresenter,不知道如何从那里开始,但希望这有点有帮助的。