Wpf 绑定到星形宽度列定义的像素值

Wpf 绑定到星形宽度列定义的像素值,wpf,grid,size,Wpf,Grid,Size,我遇到了网格列中ScrollViewer的宽度问题 ScrollViewer位于列[0]中,但并不总是将其宽度延伸到列[0]的宽度。因此,我只想给它一个绑定到ColumnDefinition[0]宽度的像素值。 请注意,ColumnDefinitions[0].Width.Value=1,因为它被定义为星形值。 还要注意,绑定到ColumnDefinitions[0]。ActualWidth的宽度为0 可能吗?您可以绑定到实际宽度值,如下所示: <Grid.ColumnDefinition

我遇到了网格列中ScrollViewer的宽度问题

ScrollViewer位于列[0]中,但并不总是将其宽度延伸到列[0]的宽度。因此,我只想给它一个绑定到ColumnDefinition[0]宽度的像素值。 请注意,ColumnDefinitions[0].Width.Value=1,因为它被定义为星形值。 还要注意,绑定到ColumnDefinitions[0]。ActualWidth的宽度为0

可能吗?

您可以绑定到实际宽度值,如下所示:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="{Binding ActualWidth, ElementName=col1}"/>
    <ColumnDefinition Width="*" Name="col1"/>
</Grid.ColumnDefinitions>

正如我在问题中所说,这给出了0的宽度。我发现绑定属性是在排列和测量网格之前读取的。这可能就是它无法工作的原因。您可能正在加载元素之前检查ActualWidth属性。改为在窗口的已加载事件中检查它。但是,使用我演示的方法进行绑定时,当实际宽度发生更改时,应自动更新列的宽度。无论如何,这是一个依赖属性。ColumnDefinition的实际宽度仅为双精度,只有最大最小宽度是DP。是否尝试使用水平对齐进行拉伸?@Maximus是。我发现将ColumnDefinition[1]更改为TwoWay要好得多。不知道该方法-setter没有代码。最重要的是,当两列都使用星形大小时,GridSplitter的水平对齐设置为中心是很重要的。
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="{Binding ActualWidth, ElementName=col1}"/>
    <ColumnDefinition Width="*" Name="col1"/>
</Grid.ColumnDefinitions>