开发者

Validation Error Template Adorner is cut insight a ScrollViewer

i have the following problem. as far a i put my Textboxes in a scrollviewer my ValidationError Adorner get cut by the ScrollViewer. i found some answers to Adorner and ScrollViewer which say i need to retemplate my scrollviewer and add an adornerdecorator. but this makes no sense to me and it doesnt help either. as far as i know should the Validation Adorner rendered in the nearest AdornerDecorator. the ScrollViewer by default has no AdornerDecorator. so does anybody know why my ValidationAdorner get cut?

I also looking for a solution :)

EDIT: it seems the ScrollContentPresenter which comes from the ScrollViewer Template cause the problem, because it has a AdornerLayer by default. Any ideas how to solve my issue?

EDIT2:

  • is there a way to create a new ScrollConntentPresenter Template without a Adornerlayer?
  • or is there a way to remove a the Adornerlayer from the VisualTree?
  • or can i force the Adornerlayer to render in a" higher/most top" AdornerLayer?
  • or can i have Scrolling Content without a ScrollViewer?

here is my xaml:

<UserControl>
  <AdornerDecorator>
    <Grid x:Name="RootControl">
       <Grid.RowDefinitions>
          <RowDefinition Height="auto" MinHeight="50"/>
          <RowDefinition Height="*"/>
       </Grid.RowDefinitions>

       <Grid x:Name="main" Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <Border x:Name="InputBorder" Grid.Column="0">
                <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Au开发者_如何学编程to">
                    <Grid x:Name="InputContainer" HorizontalAlignment="Stretch">
                        <Grid.RowDefinitions>
                            ...some rows...
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            ...some columns...
                        </Grid.ColumnDefinitions>

                        <TextBox .../><!--this Validation Adorner get cut by scrollviewer-->

                   </Grid>
                </ScrollViewer> 
            </Border>
       </Grid>
    </Grid>
  </AdornerDecorator>
</UserControl>

here is my Validation Template:

<ControlTemplate x:Key="ValidationTemplate" >
    <DockPanel>
        <AdornedElementPlaceholder Name="MyAdornedElement" />
        <Grid>
            <Border Background="{StaticResource BrushError}" Margin="3,0,0,0" x:Name="ErrorControl" BorderBrush="White" BorderThickness="1">
                <TextBlock Margin="10,3,5,2" 
                        Text="{Binding ElementName=MyAdornedElement,Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent}" 
                       Visibility="{Binding ElementName=MyAdornedElement,Path=AdornedElement.Visibility}"
                       Foreground="White" FontWeight="Bold">
                </TextBlock>
            </Border>
            <Path x:Name="path"  Margin="3,0,0,0" Data="M 0,10 L 10,0 " Fill="{StaticResource BrushError}"
                        StrokeThickness="2" Stroke="White"
                        />
        </Grid>
    </DockPanel>
</ControlTemplate>


the behavior is intended. A ScrollViewer is able to hide some of it's contents (ie the content lying in the extent). Showing an Adorner for such content that doesn't get clipped, results in a strange UI.

What you should be able to do in the ValidationTemplate though is putting the Grid element inside a Popup control. Please try that and report if it worked.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜