我刚刚开始使用版本2.0的Silverlight.我想在页面上显示一些数据网格,并通过将每个数据网格放入网格单元格来实现.然后我想我会尝试使用以下标记添加网格分割器:
<UserControl xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="SilverlightApplication1.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="UserControl_Loaded"> <Grid x:Name="LayoutRoot" Background="White"> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <basics:GridSplitter Grid.RowSpan="2" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Width="5" VerticalAlignment="Stretch" ></basics:GridSplitter> <data:DataGrid Name="TLGrid" Grid.Row="0" Grid.Column="0"> </data:DataGrid> <data:DataGrid Name="TRGrid" Grid.Row="0" Grid.Column="2"> </data:DataGrid> <data:DataGrid Name="BLGrid" Grid.Row="1" Grid.Column="0"> </data:DataGrid> <data:DataGrid Name="BRGrid" Grid.Row="1" Grid.Column="2"> </data:DataGrid> </Grid> </UserControl>
我希望能够拖动分割器来调整其他两列的大小.当我拖动栏时,其他两列都缩小了.有谁能解释为什么?
解决方法
您不需要gridplitter的中间列.如果将拆分器放在第0列,Gridsplitter将绑定到第0列的右边缘.您可以在左侧的网格中添加一个小边距,这样就不会丢失最后5个像素.
<Grid x:Name="LayoutRoot" Background="White"> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <!--<ColumnDefinition Width="Auto"/>--> <ColumnDefinition Width="1*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="1*"/> <RowDefinition Height="1*"/> </Grid.RowDefinitions> <data:DataGrid Name="TLGrid" Grid.Row="0" Grid.Column="0" /> <data:DataGrid Name="BLGrid" Grid.Row="1" Grid.Column="0"/> <!-- Moved the grid splitter to column 0 --> <basics:GridSplitter Grid.RowSpan="2" Grid.Row="0" Grid.Column="0" Width="5" /> <data:DataGrid Name="TRGrid" Grid.Row="0" Grid.Column="2" /> <data:DataGrid Name="BRGrid" Grid.Row="1" Grid.Column="2" /> </Grid>