【问题标题】:WP7 Building the UI(.xaml) from a list(.cs)WP7 从列表(.cs)构建 UI(.xaml)
【发布时间】:2010-11-04 01:55:18
【问题描述】:

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

感谢您的帮助。

【问题讨论】:

  • 我发现 code> 可以完成这项工作。但是我仍然无法获得语法。

标签: silverlight xaml windows-phone-7


【解决方案1】:

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

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

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

要尝试解决您的问题,即显示对象列表,请查看创建新“数据绑定应用程序”时默认创建的内容。您可以使用Agence,而不是使用 ItemViewModel。然后查看 MainPage.xaml 中的 DataTemplate,了解如何自定义对象内容的显示。

【讨论】:

  • 我是 wp7 的新手(实际上是几天)。我将摆脱堆栈面板并设置 grid.row 并将其列在 textBlocks 中。 thx 指出这一点。是的,我说的是asp.net mvc,为了让它快一点,我没有在我的例子中使用这个模型,这不是目的。我会这样看。再次感谢。
  • 创建一个新的“数据绑定应用程序”,绝对是找到我要找的东西的方法。谢谢马特
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
相关资源
最近更新 更多