解释我的问题很复杂,但是我会尽力解释。
所以我有一个包含两行两列的网格。在第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();
}
这里是屏幕截图,简而言之,当我说显示对话框时,我希望我的窗口位于整个内容区域的顶部,该区域具有板名称,优先级等,但我需要能够看到左侧面板和标头。请帮忙。