0

XMLファイルから値を取得するコードは次のとおりです。

foreach (XmlNode node in DOC.SelectNodes("//CheckMarkObject"))
{
    FbCheckMark checkmark = new FbCheckMark();

    checkmark.Name = node.SelectSingleNode("Name").InnerText;
    checkmark.Label = node.SelectSingleNode("Label").InnerText;

    if (node.SelectSingleNode("IsChecked").InnerText == "0")
    {
        checkmark.IsChecked = false;
    }
    else
    {
        checkmark.IsChecked = true;
    }

    listCheckMarks.Add(checkmark);

}

実行時にコントロールを作成するコードは次のとおりです。

for (int i = 0; i < listCheckMarks.Count; i++)
{
if (listCheckMarks[i].checkMark.Equals(checkMark))
{

CheckBox cb = new CheckBox();
TextBlock cbtextblock = new TextBlock();
cbtextblock.Text = listCheckMarks[i].Label;
cbtextblock.Height = 27;
cbtextblock.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
cbtextblock.Margin = new Thickness(12, 20, 0, 0);
cbtextblock.VerticalAlignment = System.Windows.VerticalAlignment.Top;
cb.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
cb.VerticalAlignment = System.Windows.VerticalAlignment.Top;
cb.Margin = new Thickness(150, 21, 0, 0);
cb.Height = 50;
cb.Width = 100;
cb.Name = listCheckMarks[i].Name;




LayoutRoot.Children.Add(cbtextblock);
LayoutRoot.Children.Add(cb);

}
}

XML ファイルに変更を加えたとき、つまり「CheckMark」タグを 2 回作成します。結果コントロールは前のものに上書きされます。前のコントロールの下に新しいコントロールを配置したい。親切に私に何ができるか教えてください。Androidのように線形レイアウトを使用しますか?
ありがとう

4

1 に答える 1

2

要素を挿入してプロパティをStackPanel設定してみてください。Orientation

その例を試してください:

StackPanel container = new StackPanel();
LayoutRoot.Children.Add(container);

for (int i = 0; i < listCheckMarks.Count; i++)
{
   if (listCheckMarks[i].checkMark.Equals(checkMark))
   {

       StackPanel childContainer = new StackPanel();
       childContainer.Orientation = Orientation.Horizontal;

       CheckBox cb = new CheckBox();
       TextBlock cbtextblock = new TextBlock();
       cbtextblock.Text = listCheckMarks[i].Label;
       cbtextblock.Height = 27;
       cbtextblock.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
       cbtextblock.Margin = new Thickness(12, 20, 0, 0);
       cbtextblock.VerticalAlignment = System.Windows.VerticalAlignment.Top;
       cb.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
       cb.VerticalAlignment = System.Windows.VerticalAlignment.Top;
       cb.Margin = new Thickness(150, 21, 0, 0);
       cb.Height = 50;
       cb.Width = 100;
       cb.Name = listCheckMarks[i].Name;




      childContainer.Children.Add(cbtextblock);
      childContainer.Children.Add(cb);

      container.Children.Add(childContainer);


  }
}
于 2012-11-30T10:36:15.220 に答える