我在创建一个也显示图片的模型时遇到了麻烦,
我的模特课:
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 :(得分:1)
您的模型不应具有Image
类型的属性,因为Image
是一个属于视图的控件。把它改成这样的东西:
public class City
{
public string Name { get; set; }
public ImageSource Country { get; set; }
}
然后像这样分配属性:
new_city.Country = bi;
您也可以在模型中使用图片网址:
public class City
{
public string Name { get; set; }
public Uri Country { get; set; }
}
new_city.Country = new Uri(...);
在任何一种情况下,您的视图中都会有一个Image
控件,其Source
属性绑定到模型:
<Image Source="{Binding Country}"/>
答案 1 :(得分:0)
当然你会有一个空的引用异常,因为你没有初始化你的图像并试图访问它的一个属性。
模型中的使用BitmapImage代替图像。
然后在模板的xaml中创建Image控件并将其与属性Country
绑定在这里查看答案C# initialize class