代码改变世界

Silverlight控件自适应利器UseLayoutRounding属性(解决自适应抖动问题)

2012-12-03 14:13  starlet  阅读(612)  评论(0编辑  收藏  举报

例如:Grid宽度100,分3列显示,那么每一列的宽度33.3333

<Grid x:Name="LayoutRoot" Background="White" Width="100">
	<Grid.ColumnDefinitions>
		<ColumnDefinition  />
		<ColumnDefinition  />
		<ColumnDefinition />
	</Grid.ColumnDefinitions>
	<Grid.RowDefinitions>
		<RowDefinition/>
	</Grid.RowDefinitions>
  	<TextBox Text="TextBox" Grid.Column="0" Grid.Row="0"  />
	<TextBox Text="TextBox" Grid.Column="1" Grid.Row="0"  />
	<TextBox Text="TextBox" Grid.Column="2" Grid.Row="0"  />
</Grid>

 

FrameworkElement.UseLayoutRounding 属性

获取或设置一个值,该值指示在布局过程中是否应该对此元素的大小和位置应用布局舍入。

属性值
类型:System.Boolean
如果应用布局舍入,则为 true;否则为 false。默认值为 false。

调整代码

<Grid x:Name="LayoutRoot" Background="White" Width="100" UseLayoutRounding="True">
	<Grid.ColumnDefinitions>
		<ColumnDefinition  />
		<ColumnDefinition  />
		<ColumnDefinition />
	</Grid.ColumnDefinitions>
	<Grid.RowDefinitions>
		<RowDefinition/>
	</Grid.RowDefinitions>
  	<TextBox Text="TextBox" Grid.Column="0" Grid.Row="0"  />
	<TextBox Text="TextBox" Grid.Column="1" Grid.Row="0"  />
	<TextBox Text="TextBox" Grid.Column="2" Grid.Row="0"  />
</Grid>

 

应用UseLayoutRounding="True"后,有一列宽度会变为34,其余为33达到舍入效果!

 

页面自适应时,例如改变窗口大小时,控件会有抖动问题,参考此属性,即可解决!

 

MSDN