2010-07-29 47 views
0

我有以下的定製Validation.ErrorTemplate:WPF驗證:如何保持定製ErrorTemplate邊框尺寸正確

  <Setter Property="Validation.ErrorTemplate"> 
      <Setter.Value> 
       <ControlTemplate> 
        <DockPanel LastChildFill="True"> 
         <Label DockPanel.Dock="Bottom" Foreground="Red" Content="{Binding ErrorContent}" Margin="0,5,0,0" Background="LightGray"/> 
         <Border BorderBrush="Red" BorderThickness="2"> 
          <AdornedElementPlaceholder/> 
         </Border> 
        </DockPanel> 

       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 

的問題是當ErrorContents比說,使用這種風格的一個TextBox寬,紅色邊框將自身大小改爲ErrorContents而不是原始控件。如何強制邊框始終是控件的大小,而不是ErrorContents?

回答

1

將Border的Horizo​​ntalAlignment從Stretch的默認值更改爲Left。這將允許它使用其所需的大小,這將是佔位符的大小加上邊框的大小,而不是被迫擴展到DockPanel的寬度。

<DockPanel LastChildFill="True"> 
    <Label DockPanel.Dock="Bottom" Foreground="Red" Content="{Binding ErrorContent}" Margin="0,5,0,0" Background="LightGray" /> 
    <Border BorderBrush="Red" BorderThickness="2" HorizontalAlignment="Left"> 
     <AdornedElementPlaceholder/> 
    </Border> 
</DockPanel> 
+0

設置DockPanel.Dock =「左」也可以。 – AKoran 2010-07-30 14:31:43