2012-11-02 45 views
0

有沒有辦法將Border放在Grid上,而不包含GridBorder元素?在WPF中放置一個邊框

<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」對電網或這樣的東西? 我只需要顯示或不名爲「PrintMargin」我WpfUserControl邊境...

此邊框應該或不可見的,也可能是我需要控制其厚度,也許顏色(刷) ...

+4

爲什麼不能使用'Border'元素?這就是*用於* ... –

+1

你的動機是不按照打算使用它的方式使用它? – flq

+0

我需要網格父母是用戶控件本身。 – serhio

回答

1

看不出什麼毛病做你提到的(在網格邊界)的方式,但如果你真的願意,你可以在你的Grid添加Border作爲最後一個元素:

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

如果你確實想要做到這一點(我強烈反對),那麼把它作爲網格中的第一個元素。否則,它可能會與其他元素重疊。這樣,其他元素重疊這一個。當然,任何重疊對於首先使用邊界的想法來說都是非常直觀的。 –

+0

我不需要第一個元素,我需要一個邊框在網格本身 – serhio

+0

@serhio - 的確如此。在網格周圍放置邊框。 '' –

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,不知道如何從那裏做的,但希望這是有所幫助的。