我希望有人可以轻松做到这一点。
我有一个包含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>
毋庸置疑,上述方法无效。即使它确实如此,它只允许使用第一个分离器而不是第二个分离器。任何人都能解释一下吗?
答案 0 :(得分:0)
<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并在第一列和最后一列中使用了两个辅助网格
答案 1 :(得分:0)
经过多次游戏,我可以接近但不完全是我想要的。所以我最终在每个分区列中放置一个Grid而不是GridSplitters并处理Grid上的PreviewMouseDown事件以及父控件的PreviewMouseUp和PreviewMouseMove事件来实现我自己的调整大小。这用于检测第1列和第3列中的拖动,并将colunmns 0和3一起调整大小。可悲的是,代码变得与我控制的其他部分交织在一起,所以不容易发布。也许有一天,当我的xaml改进时,我将能够将功能分解为适当的可重用控件。