合并两个绑定属性?

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} €"));

这对你来说可能很有趣..