我需要一些帮助来确认我看到了一个错误。
我正在为 Metro 的 xaml 创建一个“TagCloud”。没什么复杂的,应该很简单。
我在后面的代码中创建TextBlock
对象,然后将它们添加到VariableSizedWrapGrid
每个TextBlock
都有不同的高度和宽度 - 这由 确定,然后通过和testblock.Measure(size)
设置宽度和高度DesiredSize.Width
DesiredSize.Height
testblock.Measure(new Size(10000, 250));
dWidth = Double.Parse(testblock.DesiredSize.Width.ToString());
dHeight = Double.Parse(testblock.DesiredSize.Height.ToString());
问题是,当TextBlock
添加对象时,它们基本上是剪辑的,它们都锁定到一个单一的大小(基本上是 a 的行为WrapGrid
)。本质上VariableSizedWrapGrid
是拒绝在其子元素中允许可变高度和宽度?我不知道为什么它会剪辑所有内容。
<VariableSizedWrapGrid x:Name="vswg" Orientation="Horizontal" Width="Auto" Height="200" Grid.Column="1"/>
IEnumerable<TextBlock> textBlocks =
(from cloudItem in cloudItems
select ConvertToTextBlock(cloudItem, fontWeight));
vswg.Children.Clear();
foreach (TextBlock t in textBlocks)
{
vswg.Children.Add(t);
}
ConvertToTextBlock()
返回TextBlock
具有不同文本和 FontSize的新
我无法VariableSizedWrapGrid
真正拥有“可变大小”的子控件。也许我只是使用这一切都错了?