3

バグが発生していることを確認するための助けが必要です。

メトロ用の xaml で「TagCloud」を作成しています。複雑なことは何もありません。単純であるべきです。

TextBlockコード ビハインドでオブジェクトを作成し、それらをオブジェクトの子に追加します。VariableSizedWrapGrid

それぞれTextBlockが異なる高さと幅です。これは によって決定され、次に と を介してtestblock.Measure(size)幅と高さを設定します。DesiredSize.WidthDesiredSize.Height

testblock.Measure(new Size(10000, 250));
        dWidth = Double.Parse(testblock.DesiredSize.Width.ToString());
        dHeight = Double.Parse(testblock.DesiredSize.Height.ToString());

問題は、TextBlockオブジェクトが追加されると基本的にクリップされ、すべてが 1 つのサイズにロックされることです (基本的には の動作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);
}

は、異なるテキストと FontSize を持つConvertToTextBlock()新しいを返しますTextBlock

VariableSizedWrapGrid「可変サイズ」の子コントロールを実際に持つことはできません。おそらく私はこれをすべて間違って使用していますか?

4

3 に答える 3

1

DataTemplate の使用を検討してみてください。

VariableSizedWrapGrid は、ItemHeight および ItemWidth プロパティを提供します。次に、「セル内」のアイテムの幅と高さのみを選択できます。そのため、幅 3 セル、高さ 1 セルに収まるように項目を選択できます。

読むことを検討する必要があります: http://blogs.u2u.be/diederik/post/2012/03/07/Databinding-to-the-VariableSizedWrapGrid-in-Windows-8-Metro.aspx

于 2012-07-09T15:22:59.507 に答える