我是.Net开发者,也是WP7开发的新手。我要做的是根据列表中的项目数构建我的界面。我的项目是名字,地址,2个电话号码和一个图像的年龄。
在我的.cs文件中:
Agence agence1 = new Agence();
agence1.Name = "Name1";
agence1.Adress = " Adress1";
agence1.Telephone = "Tel1";
agence1.Telephone2 = "Tel01";
agence1.Region = "Region1";
agence1.Source=newBitmapImage(newUri(@"/App/Images/call.jpg",UriKind.Relative));
listAgences.Add(agence1);
在我的每个年龄的xaml文件中:
<Grid x:Name="Agence1" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="280"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0">
<TextBlock Height="30" HorizontalAlignment="Center" Name="textBlock1" Text="{Binding listAgences[0].Nom}" VerticalAlignment="Top" FontSize="18" Foreground="Black" FontWeight="Bold" />
</StackPanel>
<StackPanel Grid.Row="1" Grid.Column="1">
<TextBlock Height="30" HorizontalAlignment="Center" Name="textBlock5" Text="..." VerticalAlignment="Top" FontSize="15" Foreground="Black" />
</StackPanel>
<StackPanel Grid.Row="1" Grid.Column="0">
<TextBlock Height="30" HorizontalAlignment="Center" Name="textBlock2" Text="Adresse" VerticalAlignment="Top" FontSize="18" Foreground="Black" />
</StackPanel>
<StackPanel Grid.Row="2" Grid.Column="0">
<TextBlock Height="30" HorizontalAlignment="Center" Name="textBlock3" Text="Téléphone :" VerticalAlignment="Top" FontSize="18" Foreground="Black" />
</StackPanel>
<StackPanel Grid.Row="2" Grid.Column="1">
<TextBlock Height="50" HorizontalAlignment="Center" Name="textBlock6" Text="..." VerticalAlignment="Bottom" FontSize="15" Foreground="Black" Width="279" Padding="10,15,0,0"/>
</StackPanel>
<StackPanel Grid.Row="2" Grid.Column="2" Height="50" VerticalAlignment="Bottom" Margin="0">
<Image Height="30" Name="image1" HorizontalAlignment="Center" Source="/App;component/Images/call.png" Margin="0,10,0,0" />
</StackPanel>
<StackPanel Grid.Row="4" Grid.Column="0">
<TextBlock Height="30" HorizontalAlignment="Center" Name="textBlock4" Text="Telephone 2 :" VerticalAlignment="Top" FontSize="18" Foreground="Black" />
</StackPanel>
<StackPanel Grid.Row="3" Grid.Column="1">
<TextBlock Height="50" HorizontalAlignment="Center" Name="textBlock7" Text="..." VerticalAlignment="Bottom" FontSize="15" Foreground="Black" Width="279" Padding="10,15,0,0"/>
</StackPanel>
</Grid>
现在我将4个硬编码添加到我的列表中。所以在我的xaml文件中,我在xaml中有四倍的编码。很快,我将消费一个网络服务来获得年龄。我想要的是只有一次上面的代码,并做这样的事情:
在MVC模式中,我会在我的aspx页面中执行类似的菜单:
<ul>
<% foreach (var agence in listAgences) { %> <li><%: agence.Name %></li> <% } %>
... building the UI
</ul>
我不希望手机应用程序中的菜单只是一个快速例子。我不知道如何在WPF / xaml中做。我可以在xaml文件中执行此操作,还是必须在.cs文件中构建接口,如:this.add(Grid); this.Add(StackPanel中); ...
谢谢你的帮助。
答案 0 :(得分:1)
首先,WP7使用Silverlight,而不是WPF。
在您的XAML中,您将所有TextBlock放在单独的StackPanel中。为什么呢?
此外,分配的行号与行定义不匹配,并且您正在不必要地设置项目的高度。
当您说“在MVC模式中”时......您将使用HTML显示示例。我假设您使用的是ASP.NET MVC(基于sytax和嵌入式代码)。您的示例与实际的MVC模式无关。
要尝试解决您的问题(包括显示对象列表),请查看创建新“数据绑定应用程序”时默认创建的内容。您可以使用Agence
而不是使用ItemViewModel。然后查看MainPage.xaml中的DataTemplate,了解如何自定义对象内容的显示。