繁体   English   中英

如何在XAML中将2个网格列的宽度绑定在一起

[英]How to bind 2 grid column widths together in xaml

我希望有人可以简化这一过程。

我有一个包含5列的网格,第1列和第3列包含分隔符。 我想发生的事情是,当我移动一个拆分器而另一个移动以匹配时,效果是将第一列和最后一列的大小放在一起。

<Grid >
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" x:Name="col1"/>
        <ColumnDefinition Width="5" />
        <ColumnDefinition Width="3*"/>
        <ColumnDefinition Width="5" />
        <ColumnDefinition Width="{Binding ElementName=col1, Path=ActualWidth}" />
    </Grid.ColumnDefinitions>

    <GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" Background="Red"/>
    <GridSplitter Grid.Column="3" HorizontalAlignment="Stretch" Background="Red"/>
</Grid>

毋庸置疑,上述方法无效。 即使这样做,也只能使用第一个分离器,而不能使用第二个。 谁能阐明一些想法?

<Grid >
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" x:Name="col1"/>
        <ColumnDefinition Width="5" />
        <ColumnDefinition Width="3*"/>
        <ColumnDefinition Width="5" />
        <ColumnDefinition Width="{Binding ElementName=helperGrid, Path=ActualWidth}" />
    </Grid.ColumnDefinitions>

    <GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" Background="Red"/>
    <GridSplitter Grid.Column="3" HorizontalAlignment="Stretch" Background="Red"/>
    <Grid Grid.Column="0" x:Name="helperGrid" Width="{Binding ElementName=helperGrid2, Path=ActualWidth}" MinWidth="100"/>
    <Grid Grid.Column="4" x:Name="helperGrid2"/>
</Grid>

这对我有用,我将第一列的宽度更改为auto,并在第一列和最后一列中使用了两个辅助网格

经过大量的玩耍,我可以接近但并不完全是我想要的东西。 因此,我最终在每个拆分器列(而不是GridSplitters)中放置一个Grid,并处理了Grid上的PreviewMouseDown事件以及父控件的PreviewMouseUp和PreviewMouseMove事件,以实现我自己的调整大小。 这用于检测第1列和第3列中的拖动并一起调整第0列和第3列的大小。 可悲的是,代码已经与我的其余控件交织在一起,因此发布起来并不容易。 也许有一天,当我的xaml有所改进时,我就可以将功能分解为适当的可重用控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM