繁体   English   中英

WP7从列表(.cs)构建UI(.xaml)

[英]WP7 Building the UI(.xaml) from a list(.cs)

我是.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); ...

谢谢您的帮助。

首先,WP7使用Silverlight,而不是WPF。

在XAML中,您将所有TextBlocks放在单独的StackPanels中。 为什么?
此外,分配的行号与行定义不匹配,并且您不必要在项目上设置高度。

当您说“以MVC模式”时,您将显示一个使用HTML的示例。 我假设您的意思是在使用ASP.NET MVC(基于语法和嵌入式代码)时。 您的示例与实际的MVC模式无关。

要尝试解决问题(归结为显示对象列表),请查看在创建新的“数据绑定应用程序”时默认情况下创建的内容。 除了使用ItemViewModel之外,您还可以使用Agence 然后,查看MainPage.xaml中的DataTemplate,以了解如何自定义对象内容的显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM