获取网格第1行和第1列中子项的点坐标

时间:2018-07-17 06:06:05

标签: c# wpf xaml

解释我的问题很复杂,但是我会尽力解释。

所以我有一个包含两行两列的网格。在第0行和第0列中,放置了一些与我无关的控件。我在网格第1行和第1列中放置了一些用户控件,并为其设置了一些可见性。这是基本布局。

<Grid
        Name="MainGrid"
        Background="{StaticResource ControlsLightBackgroundBrush}">
        <Grid.RowDefinitions>
            <RowDefinition
                Height="Auto" />
            <RowDefinition
                Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition
                Width="Auto" />
            <ColumnDefinition
                Width="*" />
        </Grid.ColumnDefinitions>
<!--Some user controls in Grid Row 1 and column 1 where their visibility is set based on what to show -->
</Grid>

在代码的其他位置,我想获取第1行和第1列中内容的位置。因此,我创建了一个窗口,希望该窗口的启动位置显示在Grid的顶部当我说显示对话框时,第1行和第1列。一种方法是,我需要使用内容控件并将所有这些用户控件放在其中,并获取控件的要点。但是大多数代码已实现,我不想介绍新事物。有什么方法可以满足我的需求。

这是创建窗口的其他类中的代码,我希望该窗口看起来像位于网格第1行和第1列的顶部

MetwoWindow analysisWindow=GetMetroWindowContent();
if (ShouldShowAnalysisWindowAsModalDialog)
                            {
                                //Standalone
                                analysisWindow.Show();
                            }
                            else
                            {
                                //Embedded
                                double height = 0;
                                double width = 0;
                                var AllWindows = System.Windows.Application.Current.Windows;
                                foreach (Window window in AllWindows)
                                {
                                    if (window.GetType() == typeof(MainWindowDNA2Embedded))
                                    {
                                        var grid = WPFUtils.FindChild<System.Windows.Controls.Grid>(window, "MainGrid");
                                        if (grid != null)
                                        {
                                            height = grid.RowDefinitions[1].ActualHeight;
                                            width = grid.ColumnDefinitions[1].ActualWidth;

                                        }
                                    }
                                }
//I am setting the windows height to be whats there in Grid Row 1 and column 1.
                                analysisWindow.ShowMinButton = false;
                                analysisWindow.MaxHeight = height;
                                analysisWindow.MaxWidth = width;
//HERE I WANT TO GET THE POINTS FOR THE CONTENT IN GRID ROW 1 AND COLUMN ! SO I CAN SET THE WINDOW STARTUP LOCATION AT THOSE POINTS
                                analysisWindow.ShowDialog();
                            }

这里是屏幕截图,简而言之,当我说显示对话框时,我希望我的窗口位于整个内容区域的顶部,该区域具有板名称,优先级等,但我需要能够看到左侧面板和标头。请帮忙。 enter image description here

0 个答案:

没有答案