【发布时间】:2013-03-05 01:10:36
【问题描述】:
我遇到了一个问题,谁能告诉我这段代码有什么问题:
首先我创建 2 个画布:
private void AddItem()
{
Canvas myCanvas = new Canvas();
Canvas myCanvas2 = new Canvas();
myCanvas2.Height = 128;
myCanvas2.Width = 104;
myCanvas.Background = new SolidColorBrush(Colors.Blue);
myCanvas.Height = 200;
myCanvas.Width = 350;
myCanvas2.Margin = new System.Windows.Thickness(5,10,0,0);
myCanvas.Margin = new System.Windows.Thickness(66, 10, 0, 0);
然后我创建三个文本块:
首先:将 TextBlock 添加到第一个 Canvas:
TextBlock TextBlock1= new TextBlock();
TextBlock1.FontSize = 48;
TextBlock1.Text = Fach.Text;
Canvas.SetTop(TextBlock1, 10);
Canvas.SetLeft(TextBlock1, 29);
myCanvas.Children.Add(TextBlock1);
第二个:将第二个 TextBlock 添加到第一个 Canvas:
TextBlock TextBlock2= new TextBlock();
TextBlock2.FontSize = 24;
TextBlock2.Text = Raum.Text;
Canvas.SetTop(TextBlock2, 79);
Canvas.SetLeft(TextBlock2, 31);
myCanvas.Children.Add(TextBlock2);
第三:将第二个 TextBlock 添加到第二个 Canvas:
TextBlock TextBlock3 = new TextBlock();
TextBlock3.FontSize = 20;
TextBlock3.Text = Zeit;
Canvas.SetTop(TextBlock3, 36);
Canvas.SetLeft(TextBlock3, 10);
myCanvas2.Children.Add(TextBlock3);
将 myCanvas 和 myCanvas2 添加到 wrappanel:
wrapPanel.Children.Add(myCanvas);
wrapPanel.Children.Add(myCanvas2);
}
};
第一个 Canvas(myCanvas) 出现(框),但第二个 Canvas(myCanvas2) 应该出现在 myCanvas 前面。有人知道为什么吗?因为瓦帕内尔?我该如何更改?
编辑:Xaml
<phone:PivotItem x:Name="Montag" Header="Montag" Margin="24,27,0,1">
<ScrollViewer VerticalScrollBarVisibility="Auto" >
<toolkit:WrapPanel x:Name="wrapPanel" Orientation="Vertical"/>
</ScrollViewer>
</phone:PivotItem>
【问题讨论】:
-
我只是复制粘贴了你的代码,它工作正常,我可以看到所有的 Canvas 和 TextBoxes。
-
哦,只是我的代码中的一个错字!但我希望第二个 Canvas 位于第一个 Canvas 的左侧/前面你知道怎么做吗
-
第一个问题...您正在使用 C# 编写 xaml。其次,您完全错过了绑定数据的好处。
-
哦..好吧,这是我的第一个 Windows Phone 应用程序,所以我并不是很喜欢我能做的所有事情!我正在使用 c#,因为我想在运行时动态创建这些画布。并且无法弄清楚如何使用 xaml 来做到这一点
-
@user2127925 通常你会拥有某种绑定到某种类型的可观察集合的 ItemsControl,然后使用 DataTemplates 来显示特定类型的数据。我强烈建议您研究 MVVM 并创建一些原型来了解 WPF/Silverlight/WP UI 开发背后的真正力量。
标签: c# windows canvas windows-phone-8