2010-11-03 34 views
1

我是.Net開發人員,也是WP7開發人員的新手。我想要做的是構建我的界面,具體取決於我有多少物品一個列表。我的項目是agences與名稱,地址,2個電話號碼和一個圖像。WP7從列表(.x)構建用戶界面(.xaml)

在我的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個AGENCES硬編碼添加到我的清單。所以在我的xaml文件中,我有四倍於xaml的編碼。很快我會消費一個web服務來獲得agences。我要的是隻有一次上面的代碼,做這樣的事情:

在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中); ...

Thx爲您提供幫助。

+0

我發現可以做這項工作。不過,我仍然無法獲得語法結構。 – wallou 2010-11-03 10:11:43

回答

1

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

在您的XAML中,您將所有TextBlocks放置在單獨的StackPanel中。爲什麼?
此外,分配的行號與行定義不匹配,您將不必要地設置項目的高度。

當你說「在MVC模式中」...你使用HTML顯示一個例子。我假定你的意思是當你使用ASP.NET MVC時(基於sytax &嵌入代碼)。你的例子與實際的MVC模式無關。

要嘗試解決您的問題,這涉及到顯示對象列表,請查看創建新的「數據綁定應用程序」時默認創建的內容。您可以使用Agence而不是使用ItemViewModel。然後查看MainPage.xaml中的DataTemplate,瞭解如何自定義對象內容的顯示。

+0

我是新來的wp7(實際上幾天)。我將擺脫stackpanels並設置grid.row並將其列爲textBlocks。 thx指出了。是的,這是我正在談論的asp.net mvc,爲了讓它快速我沒有在我的例子中使用模型,這不是目的。我會那樣看。 Thx再次。 – wallou 2010-11-03 12:33:01

+0

創建一個新的「數據綁定應用程序」,絕對是找到我正在尋找的方式。馬特 – wallou 2010-11-03 13:15:04