2014-09-26 52 views
0

我有一个Xamarin问题窗体应用程序从网络上获得的图像后崩溃的Android系统。xamarin.forms数据绑定和ImageSourceProperty

Image myImage = new Image 
{ 
    Source = ImageSource.FromUri(new Uri(myObj.ImagePath1)), 
}; 

当我得到的图像使用自定义渲染图像单元列表视图是崩溃很快:如果我使用此代码,一切工作正常。

这是我与数据绑定

listView.ItemTemplate = new DataTemplate 
    (typeof(MyImageCell)) 
    Bindings = { 
     {TextCell.TextProperty, 
      new Binding("MyTitle")}, 
     {TextCell.DetailProperty, 
      new Binding("MyAddress")}, 
     {ImageCell.ImageSourceProperty, 
     new Binding("MyURL")}, 
    } 
}; 

我新的C#和所有的东西Xamarin的列表视图代码,我不知道我怎样声明它像第一个例子,仍然在绑定代码中使用它。我尝试了许多不同的方法,但似乎没有任何工作。希望这件事很简单,我错过了。

干杯

回答

0

您正在创建复杂的行,正确。在这种情况下,您不会使用原始单元格,而是使用具有复杂布局的ViewCell(即StackLayout)。下面是创建与结合图像和未绑定的标签一StackLayout样本(你可以绑定的是为好)。 我的ItemsSource为src实例的数组(这会是你的MyImageCell可能),其中Src.Source是包含图片网址字符串。

 ListView lv = new ListView(); 
     lv.ItemTemplate = new DataTemplate(() => 
      { 
       Image image = new Image(); 
       image.SetBinding(Image.SourceProperty, "Source"); 

       return new ViewCell 
       { 
        View = new StackLayout 
        { 
         Children = { 
          image, new Label{ Text = "Tubo"} 
         } 
        } 
       }; 
      }); 
     lv.ItemsSource = new Src[] { new Src(), new Src() }; 
     ... 

public class Src 
{ 
    public string Source { get; set; } 

    public Src() 
    { 
     Source = "http://blog.rthand.com//images/Logo_vNext.png"; 
    } 
} 
+0

感谢您的答复。这似乎没有任何区别。看来,它需要被包裹在ImageSource.FromUri(新的URI(的ImagePath))我试图在对象具有图像,使用该对象的字符串ImagePath的,但不能让它的工作 – user1667474 2014-09-27 08:50:56

+0

路径作为字符串就足够了,因为有是一个隐式转换。也许你有另一个问题? http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/images/ – 2014-09-27 11:45:45

+0

必须。谢谢Miha。看起来更接近 – user1667474 2014-09-28 01:34:20