Link to home
Start Free TrialLog in
Avatar of ANINDYA
ANINDYAFlag for India

asked on

Silverlight RadWindow Height

Experts
Please see the attached code.
There is a RadWindow which is having a content as TriggerUI.xaml .
this TriggerUI.xaml is open in the RadWindow.
Now my problem is I need to measure the height of the RadWindow  or TriggerUI.
Actually the Height of TriggerUI.xaml is declared as Auto .
But on runtime I need to know the actual height of the TriggerUI or its parents Height ( that is the RadWindow(either of them is needed)
I have tried in the following manner.

1. double y2 = (double) (winAddEditSchedule.Height);
2.double y2 = (double)(triggerUI.Parent as FrameworkElement).Height;
But all are failed.

I need help in this matter.
Thanking you,
Anindya
private void ShowScheduleTaskWindow ( decimal parentIID, ScheduledParentType parentType, string parentDescription )
        {
            GeneralTransform mdiTransform = this.TransformToVisual ( Application.Current.RootVisual );
            Point pntMdi = mdiTransform.Transform ( new Point ( 0, 0 ) );
            double y1 = pntMdi.Y;
            //MessageBox.Show(y1.ToString());
            if ( !Globals.AllowMultipleSchedules )
            {
                TriggerUI triggerUI = new TriggerUI ( parentIID, parentType, parentDescription );
                

                RadWindow winAddEditSchedule = new RadWindow ( );
                double y2 = (double) (winAddEditSchedule.Height);
                if ((y1 + y2) > Globals.VisibleScreenHeight)
                {
                    pntMdi.Y = y1 - ((y1 + y2) - Globals.VisibleScreenHeight) - 150;
                }
                winAddEditSchedule.Content = triggerUI;
                winAddEditSchedule.Header = "Create / Edit Schedule";
                winAddEditSchedule.Width = 425;
                winAddEditSchedule.Left = pntMdi.X + 23;



//the full function is here
private void ShowScheduleTaskWindow ( decimal parentIID, ScheduledParentType parentType, string parentDescription )
        {
            GeneralTransform mdiTransform = this.TransformToVisual ( Application.Current.RootVisual );
            Point pntMdi = mdiTransform.Transform ( new Point ( 0, 0 ) );
            double y1 = pntMdi.Y;
            //MessageBox.Show(y1.ToString());
            if ( !Globals.AllowMultipleSchedules )
            {
                TriggerUI triggerUI = new TriggerUI ( parentIID, parentType, parentDescription );
                

                RadWindow winAddEditSchedule = new RadWindow ( );
                double y2 = (double)(triggerUI.Parent as FrameworkElement).Height;
                if ((y1 + y2) > Globals.VisibleScreenHeight)
                {
                    pntMdi.Y = y1 - ((y1 + y2) - Globals.VisibleScreenHeight) - 150;
                }
                winAddEditSchedule.Content = triggerUI;
                winAddEditSchedule.Header = "Create / Edit Schedule";
                winAddEditSchedule.Width = 425;
                winAddEditSchedule.Left = pntMdi.X + 23;
                if ( ( pntMdi.Y + triggerUI.Height ) > Application.Current.RootVisual.RenderSize.Height )
                {
                    double diff = ( pntMdi.Y + triggerUI.Height ) - Application.Current.RootVisual.RenderSize.Height;
                    winAddEditSchedule.Top = pntMdi.Y - ( diff + 20 );
                }
                else
                {
                    winAddEditSchedule.Top = pntMdi.Y;
                }
                winAddEditSchedule.Margin = this.Margin;
                winAddEditSchedule.BorderThickness = new Thickness ( -22, -22, -22, -22 );

                winAddEditSchedule.ResizeMode = ResizeMode.NoResize;
                winAddEditSchedule.Closed += new EventHandler<WindowClosedEventArgs> ( winAddEditSchedule_Closed );
                triggerUI.OnScheduleDeleted += new EventHandler ( triggerUI_OnScheduleDeleted );
                triggerUI.OnScheduleSaved += new EventHandler ( triggerUI_OnScheduleSaved );
                winAddEditSchedule.ShowDialog ( );
            }
            else
            {
                SearchScheduleTaskUI taskScheduleUI = new SearchScheduleTaskUI ( parentIID, parentType );
                RadWindow winSearchSchedule = new RadWindow ( );
                winSearchSchedule.Content = taskScheduleUI;
                winSearchSchedule.Header = "Create Schedule";
                winSearchSchedule.Width = 670;
                winSearchSchedule.WindowStartupLocation = Telerik.Windows.Controls.WindowStartupLocation.CenterOwner;
                winSearchSchedule.BorderBackground = new SolidColorBrush ( Color.FromArgb ( 0xFF, 0x3C, 0x59, 0x07 ) );
                winSearchSchedule.ResizeMode = ResizeMode.NoResize;
                winSearchSchedule.ShowDialog ( );
            }
        }

Open in new window

Avatar of Gewgala
Gewgala
Flag of United States of America image

If your content control's height is set to auto, then it will auto-fill the height available in the rad window.  This means that you need to specify a height on the RadWindow control itself in order for the Height property of the RadWindow to return something of value.  If the RadWindow does not have a height specificied then I believe it will just auto-crunch to the content inside of it.  I don't believe it will return a value for the Height property under such a scenario.  I believe your problem is that you need to either specify a height on the content itself, or specify a height on the RadWindow.

One thing you could also try is accessing the ActualHeight property.  Does this give you a value, when accessing the property in the control content xaml or the rad window property itself?
Avatar of ANINDYA

ASKER

Expert Gewqala
As you said to try the ActualHeight property of the Radwindow should be tried so here I have tried .
please have a look on that and let me know what more can I do under that circumstances.
q.JPG
ASKER CERTIFIED SOLUTION
Avatar of Gewgala
Gewgala
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial