Silverlight ValidationSummary экран недвижимости

Silverlight 3;

У меня есть ValidationSummary в верхнем ряду моей сетки. Когда появляется ValidationSummary, он толкает строку моей кнопки (строка 3) внизу отображаемого экрана.

<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>

Я - кодовая обезьяна, а не толкатель пикселей и не могу понять, какая комбинация из Stretch, Auto и * мне нужна. Есть какие-то толкатели, которые могут помочь??

Спасибо Марк

1 ответ

Я смог сделать это, сделав элемент управления validationsummary потомком scrollview с набором maxheight. Это ограничивает способность валидации валидации превышать максимальную высоту ее родителя.

Поскольку по умолчанию проверочные элементы управления используют функцию getparent() для определения проверяемого ими элемента управления, для этого необходимо вручную переопределить цель при инициализации приложения (в vb я делаю это в подпрограмме new() моего класса страницы).

MyValidationSummary.Target = TheNewGrid

Вы, вероятно, не хотите видеть scrollviewer, когда нет ошибок, поэтому установите его в Collapsed, и в нем сделайте его видимым только с validationsummary имеет ошибки:

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

Я не могу заставить этот редактор не испортить xaml, вот ссылка: пример

<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>
Другие вопросы по тегам