2013-07-16 65 views
0

我無法建立一個模型,該模型還顯示一峯,映像創建模型

我的模型類:

public class City 
{ 
    public string Name 
    { 
     get; 
     set; 
    } 

    public Image Country 
    { 
     get; 
     set; 
    } 
} 

然後在我MainPage.xaml.cs中:

List<City> source = new List<City>(); 
BitmapImage bi = new BitmapImage(new Uri("/PhoneApp7;component/Images/test.png", UriKind.Relative)); 
     City new_city = new City(); 

     new_city.Name = "Africa"; 
     new_city.Country.Source = bi; 
     new_city.Language = "xhosa"; 

     source.Add(new_city); 

     citiesList.ItemsSource = source; 

我得到一個nullreference異常,我不知道我做錯了什麼,是否有另一種方式添加圖像到數據綁定的源?


我已經試過這樣:

public class City 
{ 
    public City(Uri countryUri) 
    { 
     Country = new BitmapImage(countryUri); 
    } 

    public string Name 
    { 
     get; 
     set; 
    } 

    public BitmapImage Country 
    { 
     get; 
     set; 
    } 

    public string Language 
    { 
     get; 
     set; 
    } 
} 

的App.xaml:

<DataTemplate x:Key="citiesItemTemplate"> 
     <StackPanel Grid.Column="1" VerticalAlignment="Top"> 
      <TextBlock Text="{Binding Name}" FontSize="26" Margin="12,-12,12,6"/> 
      <Image Source="{Binding Path=Country}" /> 
      <TextBlock Text="{Binding Language}" Foreground="Orange" /> 
     </StackPanel> 
    </DataTemplate> 

MainPage.xaml中

List<City> source = new List<City>(); 

     Uri bi = new Uri("/Images/test.png", UriKind.Relative); 
     City new_city = new City(bi) { Name = "Africa", Language = "xhosa", }; 

     new_city.Name = "Africa"; 
     new_city.Language = "Xhosa"; 

     source.Add(new_city); 

     citiesList.ItemsSource = source; 

MainPage.xaml中:

<phone:LongListSelector x:Name="citiesList" 
           Background="Transparent" 
           ItemTemplate="{Binding citiesItemTemplate}" 
           /> 

但現在圖像是假設顯示,它只顯示phoneapp7.Model.City,不知道我在做什麼錯了?

+0

您使用前需要先實例化'Country'(即'new_city.Country.Source = bi;')。例如:'new_city.Country = new Image(someArgsIfAny)' – Leri

回答

0

當然你會有一個空引用異常,因爲你沒有初始化你的圖像並試圖訪問它的一個屬性。

在模型中使用BitmapImage代替圖像。

然後在模板中的XAML創建Image控件,並與屬性綁定其國家

檢查在這裏C# initialize class

1

您的模型不應該有Image類型的屬性,因爲Image是一個答案控制,這屬於視圖。它變成像這樣:

public class City 
{ 
    public string Name { get; set; } 
    public ImageSource Country { get; set; } 
} 

,然後分配這樣的特性:

new_city.Country = bi; 

您也可以只使用圖像的URL在你的模型:

public class City 
{ 
    public string Name { get; set; } 
    public Uri Country { get; set; } 
} 

new_city.Country = new Uri(...); 

無論哪種情況,您都會有一個Image控制在你看來有它的Source屬性綁定到模型:

<Image Source="{Binding Country}"/>