silverlight 设定grid大小

beijing__2008 2008-06-26 02:15:04
<Grid x:Name ="RootElement" >

<Grid.RowDefinitions>
<RowDefinition Height= "50%"/>
<RowDefinition Height= "50%"/>
</Grid.RowDefinitions>

</Grid>
在xaml中这样设定可以么? 可是显示的却是
<RowDefinition Height= "50"/>
<RowDefinition Height= "50"/>
而不是按百分比显示的
如果我在代码中把第二个的高度设为0 并且把总体的高度也设为0 能不能实现只显示第一个? 会不会再按照 百分比重新分配?

希望有高手帮忙解决下 先谢谢了 分不够可以加
...全文
278 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
富莱工作室 2008-06-26
  • 打赏
  • 举报
回复
晕死 你有没看清

void bt_Click(object sender, RoutedEventArgs e)
{
r1.Height = new GridLength(0);
}
直接设置第二行的高度为0, 不是设置button的高度为0

<Grid.RowDefinitions>
<RowDefinition x:Name="r0" Height="*" />
<RowDefinition x:Name="r1" Height="Auto" />
</Grid.RowDefinitions>
<TextBox Grid.Row ="0" Margin="266,0,266,0" />
<Button Grid.Row ="1" x:Name="bt">Enter </Button>
</Grid>

这样你可以直接设置Button的高度为0, 那么只剩下一行
beijing__2008 2008-06-26
  • 打赏
  • 举报
回复
可是我在设置宽度的时候用的也是grid 放置一个togglebutton和一个textblock 当我把togglebutton的宽度设置成0的时候
线还在原来的位置上 而且textblock 上的字还在原来的位置上
富莱工作室 2008-06-26
  • 打赏
  • 举报
回复
没有了啊, 我用wpf测试的
beijing__2008 2008-06-26
  • 打赏
  • 举报
回复
和我想的一样的 可是<Grid showgridlines = "true">
<Grid.RowDefinitions>
<RowDefinition x:Name="r0" Height="0.5*" />
<RowDefinition x:Name="r1" Height="0.5*" />
</Grid.RowDefinitions>
<TextBox Grid.Row ="0" Margin="266,0,266,0" />
<Button Grid.Row ="1" x:Name="bt">Enter </Button>
</Grid>
这样设置一下 你会发现这行线还在原来的位置上
富莱工作室 2008-06-26
  • 打赏
  • 举报
回复
即使你改了总体的高度为原来的一半 但它还是按照这个比率显示两行 而不是一行

你改变Grid 的Height, 并不能改变r0, r1, 因为它们是按比列显示, 各占50%, 要只显示一行, 可以将另一行的高度置0
富莱工作室 2008-06-26
  • 打赏
  • 举报
回复
我还真没搞懂你想干什么, 呵呵

<Grid>
<Grid.RowDefinitions>
<RowDefinition x:Name="r0" Height="0.5*" />
<RowDefinition x:Name="r1" Height="0.5*" />
</Grid.RowDefinitions>
<TextBox Grid.Row ="0" Margin="266,0,266,0" />
<Button Grid.Row ="1" x:Name="bt">Enter</Button>
</Grid>

void bt_Click(object sender, RoutedEventArgs e)
{
r1.Height = new GridLength(0);
}

上面是你要的吗, 这样只一行了
beijing__2008 2008-06-26
  • 打赏
  • 举报
回复
我说的总体高度变成原来一半的功能是要在代码中实现的
已经设定成这样了<Grid.RowDefinitions>
<RowDefinition Height="0.5*" />
<RowDefinition Height="0.5*" />
</Grid.RowDefinitions>
想变成这样<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="0" />
</Grid.RowDefinitions> (就是把第二行去掉,只显示第一行)
但是要在代码中实现 而且比率设定完了 即使你改了总体的高度为原来的一半 但它还是按照这个比率显示两行 而不是一行
富莱工作室 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 beijing__2008 的回复:]

如果我在代码中把第二个的高度设为0 并且把总体的高度也设为原来的一半 能不能实现只显示第一个? 会不会再按照 百分比重新分配?
[/Quote]

<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="0" />
</Grid.RowDefinitions>

只显示第一个,不按百分比

<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>

将动态计算百分比
beijing__2008 2008-06-26
  • 打赏
  • 举报
回复

如果我在代码中把第二个的高度设为0 并且把总体的高度也设为原来的一半 能不能实现只显示第一个? 会不会再按照 百分比重新分配?
富莱工作室 2008-06-26
  • 打赏
  • 举报
回复
<Grid.RowDefinitions>
<RowDefinition Height="0.5*" />
<RowDefinition Height="0.5*" />
</Grid.RowDefinitions>

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧