合并两个绑定属性?
Merge two binding properties?
我有一个列表,我想要 "join" 两个绑定属性显示在列表视图中。类似于:
public class T
{
public string nit { get; set; }
public string nombrecliente { get; set; }
public string nombresitio { get; set; }
public string direccion { get; set; }
}
列表视图 class 类似于:
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 到标签。可以帮我吗?
您只能绑定到 class 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");
您必须为字幕定义类似的 属性。您可能还想缓存计算的字符串,以避免在用户滚动列表时重新计算。但是这种添加属性的机制会做你想做的事。
price.SetBinding (Label.TextProperty,new Binding ("Totalprice", stringFormat: "{0} €"));
这对你来说可能很有趣..
我有一个列表,我想要 "join" 两个绑定属性显示在列表视图中。类似于:
public class T
{
public string nit { get; set; }
public string nombrecliente { get; set; }
public string nombresitio { get; set; }
public string direccion { get; set; }
}
列表视图 class 类似于:
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 到标签。可以帮我吗?
您只能绑定到 class 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");
您必须为字幕定义类似的 属性。您可能还想缓存计算的字符串,以避免在用户滚动列表时重新计算。但是这种添加属性的机制会做你想做的事。
price.SetBinding (Label.TextProperty,new Binding ("Totalprice", stringFormat: "{0} €"));
这对你来说可能很有趣..