获取实际WPF网格宽度
我有一个带有网格的WPF窗口:获取实际WPF网格宽度,wpf,grid,width,stackpanel,Wpf,Grid,Width,Stackpanel,我有一个带有网格的WPF窗口: <Grid Name="mainGrid"> <Grid.ColumnDefinitions> <ColumnDefinition Width="20*" /> <ColumnDefinition Width="700*" /> <ColumnDefinition Width="190*" /> </Grid.ColumnDefinitions> <G
<Grid Name="mainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="700*" />
<ColumnDefinition Width="190*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="220*" />
<RowDefinition Height="450*" />
<RowDefinition Height="160*" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
</Grid>
在codebehind中,我将stackpanel添加到主网格的第2行第1列,但我希望stackpanel的最大宽度为第1-50px列的宽度。我无意中访问了accrossstkPanel.Width=mainGrid.ColumnDefinitions(1).Width.ToString-50
,但这将导致以下错误:
700*不能转换为双精度
是否有一种方法可以获得屏幕上显示的网格列的实际宽度,以使用我想要的方式,或者设置填充或类似设置
谢谢
马特原来我就快到了。而不是使用 stkPanel.Width=mainGrid.ColumnDefinitions[1].Width.ToString-50 我应该用 stkPanel.Width=mainGrid.ColumnDefinitions[1]。实际宽度.ToString-50
当您自己进行行和列大小计算时,您应该知道这种方法存在缺陷。当数据更改或窗口调整大小时,网格的布局将更新,所有内容都可能更改。当然,你可以适应这些变化,但这需要更多的工作
相反,如果可以的话,您可以尝试使用额外的列和列跨度来处理网格本身。然后网格将处理所有脏活,您可以关注外观。网格有两个属性:
Grid g = new Grid();
double width1 = g.ActualWidth;
double width2 = g.RenderSize.Width;
这两个应该可以做到,试试看。你必须使用实际宽度和实际高度。 例如:
stkPanel.Width = mainGrid.ColumnDefinitions[1].ActualWidth - 50;