2016-06-14 76 views
0

我得到一個列表,我想要「加入」兩個綁定屬性以顯示在列表視圖中。喜歡的東西:合併兩個綁定屬性?

public class T 
{ 
    public string nit { get; set; } 
    public string nombrecliente { get; set; } 
    public string nombresitio { get; set; } 
    public string direccion { get; set; } 
} 

和列表視圖類是一樣的東西:

Label lblTitulo, lblSubTitulo; 
    listview.ItemsSource = List<T>; 
    T objT = new T(); 

    string m_titulo = ""; 
    string m_subtitulo = ""; 

    public lvClientes() 
    { 
     m_titulo = agregarTexto (m_titulo, "NIT: " + objT.nit); 
     m_titulo = agregarTexto (m_titulo, "Cliente: " + objT.nombrecliente); 


     m_subtitulo = agregarTexto (m_titulo, "Sitio: " + objT.nombresitio); 
     m_subtitulo = agregarTexto (m_titulo, "Dirección: " + objT.direccion); 

     lblSubTitulo.SetBinding (Label.TextProperty, m_subtitulo); 
     lblTitulo.SetBinding(Label.TextProperty, m_titulo; 
    } 

    private string agregarTexto (string textoOriginal, string textoAgregar) 
    { 
     if (!textoAgregar.Equals ("")) 
     { 
      if (textoOriginal.Equals ("")) 
      { 
       textoOriginal = textoAgregar.Replace ("\n", ", "); 
      } 
      else 
       textoOriginal += "\n" + textoAgregar.Replace ("\n", ", "); 
     } 
     return textoOriginal; 
    } 

但是,這樣我得到一個NullArgumentException加入m_titulo & m_subtitulo的標籤。可以幫我?

+0

我不同意,這是一個確切的重複。引用的問題列出了空引用異常的許多根本原因,但不涉及這一點 - 如果您使用Xamarin數據綁定綁定到不是綁定上下文類型的成員的名稱,會發生什麼情況。因此,該職位描述的補救措施都不適用於OP的情況。 – DavidS

回答

0

只能所以你的情況綁定到T級的屬性,你可以修改噸至是這樣的:

public class T 
{ 
    public string nit { get; set; } 
    public string nombrecliente { get; set; } 
    public string nombresitio { get; set; } 
    public string direccion { get; set; } 
    public string titulo { 
     get { 
      var temp = agregarTexto ("", "NIT: " + nit); 
      return agregarTexto (temp, "Cliente: " + nombrecliente); 
     } 
    } 
} 

然後在lvClientes,該對lblTitulo結合將是:

lblTitulo.SetBinding(Label.TextProperty, "titulo"); 

你必須爲subtitulo定義一個類似的屬性。您可能還想要緩存計算的字符串,以避免在用戶滾動列表時避免重新計算。但是,這種添加屬性的機制會做你想做的。

0
price.SetBinding (Label.TextProperty,new Binding ("Totalprice", stringFormat: "{0} €")); 

這對你有意思..