2016-06-14 16 views
0

私はListを取得しました。リストビューに表示する2つのバインディングプロパティを "join"したいと思います。ような何か:2つのバインディングプロパティをマージしますか?

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; 
    } 

しかし、私はラベルにm_titulo & m_subtituloを追加NullArgumentExceptionを得るその方法:

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

とリストビュークラスは、のようなものです。私を助けることができますか?

+0

私は、これは正確な複製であることを同意しません。参照される質問には、null参照例外の多くの根本原因が記載されていますが、これを処理しません。これは、Xamarinデータバインディングを使用してバインディングコンテキストタイプのメンバーではない名前にバインドする場合に起こります。その結果、その記事に記載されている救済方法のいずれもOPの状況には適用されません。 – DavidS

答えて

0

あなたのケースでは、あなたがのようなものにするためにTを修正することができるので、あなたが唯一のクラス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"); 

サブタイトルにも同様のプロパティを定義する必要があります。また、ユーザーがリストをスクロールするときに再計算を避けるために、計算された文字列をキャッシュすることもできます。しかし、プロパティを追加するこのメカニズムは、あなたが望むことをするでしょう。

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

これはあなたのために興味深いものになることができます。..

関連する問題