none
Silverlight. Поведения грида при загрузке. RRS feed

  • Общие обсуждения

  • Добрый день,

    хотелось бы понять поведения грида (UserControl?) при загрузке страницы.

    Есть какая-то тестовая страница :

     <Grid x:Name="LayoutRoot" Background="White">
            <Grid.RowDefinitions>
                <RowDefinition Height="110"></RowDefinition>
                <RowDefinition Height="40"></RowDefinition>
                <RowDefinition MinHeight="650"></RowDefinition>
                <RowDefinition Height="50"></RowDefinition>
            </Grid.RowDefinitions>
    
            <Border Margin="10" Grid.Row="0" Background="#EEEEEE"  CornerRadius="7" BorderBrush="Gray" BorderThickness="1">
            
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="10"></RowDefinition>
                        <RowDefinition ></RowDefinition>
                        <RowDefinition Height="10"></RowDefinition>
                    </Grid.RowDefinitions>
                    <Grid Grid.Row="1" Background="White" >
                        <Border BorderBrush="Gray"   Background="White" BorderThickness="0,1">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="20*" MinWidth="140"></ColumnDefinition>
                                    <ColumnDefinition Width="80*" MinWidth="300"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                               
                                <TextBlock x:Name="login" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Right"  Margin="30,0" FontWeight="ExtraBlack" FontSize="13"></TextBlock>
                                
                            </Grid>
                        </Border>
                    </Grid>
                </Grid>
            </Border>
        </Grid>

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

    В любом случае, хотелось бы выяснить этот момент.

    Заранее спасибо.

    23 июля 2012 г. 16:33

Все ответы

  • Думаю вряд ли. Может Вы где-нибудь ещё в коде, на странице или JavaScript - ом меняете параметры, или переопределяете их. Если это не так, то может, просто напросто, машина медленно работает и программа грузится медленно.
    24 июля 2012 г. 6:47
    Модератор
  • нет в коде ничего не меняется, да и машина для такого примера(тестового), более чем...

    24 июля 2012 г. 7:24
  • А Вы случайно не редактировали файл кода метода InitializeComponent(), который генерируется автоматически средой? Может операции добавляли или ещё, что?
    24 июля 2012 г. 7:36
    Модератор
  • нет, в проекте есть только UserControl :

    <UserControl x:Class="PaymentOnline.Views.Default"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                
                 xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" mc:Ignorable="d"
        >
    //code with grid

    и App.xaml в котором вызывается контрол:

      public partial class App : Application
        {
    
            public App()
            {
                this.Startup += this.Application_Startup;
                this.UnhandledException += this.Application_UnhandledException;
    
                InitializeComponent();
    
                this.ApplicationLifetimeObjects.Add(SecurityHelper.Instance.LoggIn());
                WebContext.Current.Authentication.LoggedIn += Authentication_LoggedIn;
                
            }
    
            private void Authentication_LoggedIn(object sender, AuthenticationEventArgs e)
            {
                if (SecurityHelper.Instance.IsSecurityGroup(SecurityGroup.All, true))
                    this.RootVisual = new Default();
            }
    }




    24 июля 2012 г. 10:05
  • Попробуйте создать новый проект и внетсти в него свой готовый UserControl, будет ли повторятся это странное поведение? Скорей всего, как уже сказали, у вас происходит где-то дублирования задания размеров элемента. 

    Для связи [mail]


    26 июля 2012 г. 14:33
    Модератор
  • "В любом случае, хотелось бы выяснить этот момент." - также попробуйте запустить проект в режиме отладки, установите точки останова в тех местах где устанавливаются размеры элементов и посмотрите, что там происходит реально.
    31 июля 2012 г. 8:05
    Модератор