3

いくつかの子要素に基づいてスタックパネルを注文する方法はありますか?

コード ビハインドでは、グループボックスやテキストブロックなどの一般的なものをスタックパネルに追加します。テキストブロック情報の 1 つは Web サービスからの DateTime です。linq を使用して降順で並べ替えようとしましたが、出力は同じです。

それで、スタックパネルの子要素の1つ、つまりDateTime属性を保持するtextblock1.Textでソートできるかどうか疑問に思っていましたか?

        XDocument xDoc = XDocument.Load(uriGroups);
        var sortedXdoc = xDoc.Descendants("Student")
                       .OrderByDescending(x => Convert.ToDateTime(x.Element("TimeAdded").Value));


        foreach (var node in xDoc.Descendants("Student"))
        {

            GroupBox groupbox = new GroupBox();
            groupbox.Header = String.Format(node.Element("StudentID").Value);
            groupbox.Width = 100;
            groupbox.Height = 100;
            groupbox.Margin = new Thickness(1);

            TextBlock textBlock = new TextBlock();
            textBlock.Text = String.Format(node.Element("FirstName").Value + " " + (node.Element("LastName").Value));
            textBlock.TextAlignment = TextAlignment.Center;

            TextBlock textBlock1 = new TextBlock();
            textBlock1.Text = (DateTime.Parse(node.Element("TimeAdded").Value)).ToString("d");
            String.Format("{0:d/M/yyyy}", DateTime.Parse(node.Element("TimeAdded").Value));
            textBlock1.TextAlignment = TextAlignment.Center;
            textBlock1.VerticalAlignment = VerticalAlignment.Bottom;

            StackPanel stackPanel = new StackPanel();
            stackPanel.Children.Add(groupbox);

            stackPanel.Children.Add(textBlock);
            stackPanel.Children.Add(textBlock1);
            stackPanel.Margin = new Thickness(5);
            stackPanel.MouseEnter += new MouseEventHandler(stackpanel_MouseEnter);
            stackPanel.MouseLeave += new MouseEventHandler(stackpanel_MouseLeave);
            MainArea1.Children.Add(stackPanel);
        }
    }
4

1 に答える 1

2

表示の順序は、呼び出しの順序によって完全に定義されます。

MainArea1.Children.Add(stackPanel);

だから、次のようなものを試してください

 foreach (var node in xDoc.Descendants("Student").OrderBy(e => ...))
 {
    ....
 }

(そして、ここでは本当に Temlates を使用する必要があります)

于 2012-04-17T11:12:38.090 に答える