我有一份清单,我希望"加入"要在列表视图中显示的两个绑定属性。类似的东西:
public class T
{
public string nit { get; set; }
public string nombrecliente { get; set; }
public string nombresitio { get; set; }
public string direccion { get; set; }
}
和listview类类似:
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&amp; m_subtitulo到标签。可以帮帮我吗?
答案 0 :(得分: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");
您必须为subtitulo定义类似的属性。您可能还希望缓存计算的字符串,以避免在用户滚动列表时重新计算。但是这种添加属性的机制可以达到你想要的效果。
答案 1 :(得分:0)
price.SetBinding (Label.TextProperty,new Binding ("Totalprice", stringFormat: "{0} €"));
这对你来说很有意思..