2014-09-26 58 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