获取实际的WPF网格宽度

Lim*_*ima 6 wpf grid width stackpanel

我有一个带网格的WPF窗口:

<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>
Run Code Online (Sandbox Code Playgroud)

在代码隐藏中,我将一个stackpanel添加到第一列,第二行mainGrid,但我希望stackpanel的最大宽度为第1列的宽度 - 50px.我偶然发现了stkPanel.Width = mainGrid.ColumnDefinitions(1).Width.ToString - 50,但是这会错误:

700*不能转换为double

有没有办法获得网格列的实际宽度,因为它显示在屏幕上以使用我想要的方式,或者我是否设置填充或类似?

谢谢,

马特

Lim*_*ima 5

原来我快到了。而不是使用

stkPanel.Width = mainGrid.ColumnDefinitions[1].Width.ToString - 50

我应该用

stkPanel.Width = mainGrid.ColumnDefinitions[1].ActualWidth.ToString - 50


Dam*_*cus 5

您有两个属性Grid:

Grid g = new Grid();
double width1 = g.ActualWidth;
double width2 = g.RenderSize.Width;
Run Code Online (Sandbox Code Playgroud)

这两个应该做的,尝试一下