2009-09-25 6 views
0

Silverlight 3; J'ai un ValidationSummary dans la rangée supérieure de ma grille. Quand le ValidationSummary apparaît, il pousse ma rangée de boutons (ligne 3) au bas de l'écran affichable.Silverlight ValidationSummary écran immobilier

<Grid HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="36" /> 
     </Grid.RowDefinitions> 

     <di:ValidationSummary Grid.Row="0" /> 

     <Grid x:Name="gridOuterContentHolder" 
       Grid.Row="1"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="0.68*" /> 
       <RowDefinition Height="5" /> 
       <RowDefinition Height="0.32*" /> 
      </Grid.RowDefinitions> 
<!-- elements removed for brevity --> 

     </Grid> 

     <StackPanel x:Name="stack" 
        Grid.Row="2" 
        Orientation="Horizontal" 
        HorizontalAlignment="Right"> 
      <Button Content="Delete" 
        x:Name="btnDelete" 
        Height="20" 
        Width="75" /> 

     </StackPanel> 
    </Grid> 

Je suis un singe de code non un pousseur de pixel et ne peut pas comprendre quelle combinaison de stretch de, et Auto * s j'ai besoin. Des pousseurs là-bas qui peuvent aider ??

Merci, Mark

Répondre

0

j'ai pu le faire en faisant le ValidationSummary contrôler un enfant de scrollview avec un ensemble maxheight. Cela limite la capacité du récapitulatif de validation à s'étendre au-delà de la maxheight de ses parents. Parce que, par défaut, les contrôles validationsummary utilisent un getparent() pour déterminer le contrôle qu'ils valident, cela nécessite de remplacer manuellement la cible lorsque l'application innitialise (en vb je le fais dans la routine new() de ma page . classe

MyValidationSummary.Target = TheNewGrid 

Vous ne voulez probablement pas voir le ScrollViewer quand il n'y a pas d'erreur, mettez-le à Collapsed et dans la rendre visible uniquement avec le ValidationSummary comporte des erreurs:

Private Sub MyValidationSummary_LayoutUpdated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyValidationSummary.LayoutUpdated 
    If MyValidationSummary.HasErrors Then 
     svMyValidationSummary.Visibility = Windows.Visibility.Visible 
    Else 
     svMyValidationSummary.Visibility = Windows.Visibility.Collapsed 
    End If 
End Sub 

Je n'arrive pas à obtenir cet éditeur o ne pas bousiller le xaml, voici un lien: example

<ScrollViewer Visibility="Collapsed" x:Name="svMyValidationSummary" MaxHeight="200" Margin="6" BorderThickness="1"> 
    <dataInput:ValidationSummary FocusControlsOnClick="True" x:Name="MyValidationSummary"></dataInput:ValidationSummary> 
</ScrollViewer> 

<data:DataGrid Margin="10" AutoGenerateColumns="False" Width="1250" x:Name="TheNewGrid" Height="350"> 
    <data:DataGrid.Columns> 
     <local:DataGridTemplateColumnBindingText CanUserReorder="False" CanUserResize="False" 
          HeaderStyle='{StaticResource RowHeaderColumnStyle}' > 
      <local:DataGridTemplateColumnBindingText.CellEditingTemplate> 
       <DataTemplate> 
        <controlsToolkit:DockPanel HorizontalAlignment="Stretch"> 
         <StackPanel controlsToolkit:DockPanel.Dock="Right" Orientation="Horizontal"> 
          <Button ToolTipService.ToolTip="Insert an empty row" Click="btnInsertRow_Click"> 
           <Image Source="add.png"></Image> 
          </Button> 
          <Button ToolTipService.ToolTip="Copy row" Click="btnDuplicateRow_Click"> 
           <Image Source="application_double.png"></Image> 
          </Button> 
          <Button ToolTipService.ToolTip="Delete row" Click="btnDeleteRow_Click"> 
           <Image Source="delete.png"></Image> 
          </Button> 
         </StackPanel> 
         <Border BorderThickness="1" Background="PowderBlue"> 
          <TextBlock controlsToolkit:DockPanel.Dock="Left" TextAlignment="Center" HorizontalAlignment="Stretch" Text="{Binding SortNumber}"></TextBlock> 
         </Border> 
        </controlsToolkit:DockPanel> 
       </DataTemplate> 
      </local:DataGridTemplateColumnBindingText.CellEditingTemplate> 
     </local:DataGridTemplateColumnBindingText> 
    </data:DataGrid.Columns> 
</data:DataGrid>