2017-07-29 9 views
0

私は今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ではありません。

ありがとうございました!

答えて

0

非常によく、誰もそれを理解することができなかったので、Web上にはどのようにして情報がないので、解決するためにWinFormsの方法に戻ってみましょう。だから、私はObservableCollection Listを更新してItemsSourceに再び戻すために、新しいSQl Queryをロードすることです。

関連する問題