私は今WPFでいくつかの経験を得ています。しかし、私は把握できない問題があります。アイテムをバインドリストボックスに追加/削除する私が見たすべての例では、1つのアイテムの色しか表示されません。誰かが1つ以上のアイテムを持つコレクションの例を提供しているなら、私は非常に感謝しています。複数の項目をListBox1から複数の項目をバインドするListBox2に追加
interface DbInterface
{
ObservableCollection<fichaProduto> carregaFichaProduto(int? fichaId);
}
public class fichaProduto
{
public int fichaProdutoFichaId { get; set; }
public int fichaProdutoProdutoId {get;set;}
public string fichaProdutoProdutoNome { get; set; }
public string fichaProdutoStatusId { get; set; }
public string fichaProdutoStatusNome { get; set; }
public string fichaProdutoOrdemServico { get; set; }
public DateTime? fichaProdutoDataInstalacao { get; set; }
public string fichaProdutoHorarioDe { get; set; }
public string fichaProdutoHorarioAte { get; set; }
public string fichaProdutoContrato { get; set; }
public string fichaProdutoCodigoInstalacao { get; set; }
public Decimal fichaProdutoValor { get; set; }
}
class dbMysql : DbInterface
{
public ObservableCollection<fichaProduto> carregaFichaProduto(int? fichaId)
{
using (MySqlConnection smartConexaoDb = new MySqlConnection(smartSingleTon.connectionStringDb))
{
using (MySqlCommand cmd = new MySqlCommand("SELECT fc.id,pp.nome,st.nome,fp.os,fp.dia_instalacao,fp.horarioDe,fp.horarioAte,fp.contrato,fp.codigo_instalacao,fp.valor FROM ficha fc JOIN ficha_produto fp ON fc.id = fp.id_ficha LEFT JOIN ficha_produto fp2 ON (fc.id = fp2.id_ficha AND fp.id < fp2.id) JOIN produto_plano pp ON pp.id = fp.id_produto JOIN status st ON fp.id_status = st.id WHERE fc.id = @fichaId ORDER BY fc.id DESC", smartConexaoDb))
{
cmd.Parameters.AddWithValue("@fichaId", fichaId);
smartConexaoDb.Open();
using (MySqlDataReader dr = cmd.ExecuteReader())
{
var listFichaProduto = new ObservableCollection<fichaProduto>();
while (dr.Read())
{
listFichaProduto.Add
(new fichaProduto()
{
fichaProdutoFichaId = Convert.ToInt32(dr.GetValue(0)),
fichaProdutoProdutoNome = Convert.ToString(dr.GetValue(1)),
fichaProdutoStatusNome = Convert.ToString(dr.GetValue(2)),
fichaProdutoOrdemServico = Convert.ToString(dr.GetValue(3)),
fichaProdutoHorarioDe = Convert.ToString(dr.GetValue(5)),
fichaProdutoHorarioAte = Convert.ToString(dr.GetValue(6)),
fichaProdutoContrato = Convert.ToString(dr.GetValue(7)),
fichaProdutoCodigoInstalacao = Convert.ToString(dr.GetValue(8)),
fichaProdutoValor = Convert.ToDecimal(dr.GetValue(9))
});
}
return listFichaProduto;
}
}
}
}
}
OBS:リストボックス2は、以下の本方法から結合されている:
public ObservableCollection<fichaProduto> carregaFichaProduto(int? fichaId)
それにfichaProdutoクラスの二つの項目を示しています。 fichaProdutoProdutoNomeおよびfichaProdutoValor。
リストボックス1別のより完全なObservableCollection製品DBクエリからのデータをバインドします。
ListBox1から、ListBox2に項目を追加したり、ListBox2から削除したりすることもできます。
私はWnFormsでこれを行う方法を知っていますが、今はWPFではありません。
ありがとうございました!