2009-10-13 7 views
0

salut tout le monde! Je suis nouveau en wpf alors pardonnez-moi je veux plus !!! J'essaye de construire une application. J'ai une arborescence qui délimite une source de données. c'est d'accord. J'ai deux problèmes. Premier; comment puis-je sélectionner un élément de treeview? je veux une nouvelle fenêtre popsup quand je choisis un article; quand je clique sur un autre objet une autre fenêtre popsup. Le deuxième problème est que je ne peux pas changer de premier plan et font.Thanks tout le monde à l'avancecomment sélectionner treeviewitem en wpf

espace de noms CellBiology { public partial class TreeView { TreeView public() { this.InitializeComponent(); BindTreeView();

} 

    public void BindTreeView() 
    { 
     OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\CellBiology.mdb;Persist Security Info=True"); 

     try 
     { 
      con.Open(); 
      OleDbCommand cmd = new OleDbCommand("Select * from Topics", con); 
      OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      da.Fill(ds, "Topics"); 
      int row = ds.Tables["Topics"].Rows.Count; 
      List<MyMenuItem> myList = new List<MyMenuItem>(); 


      if (row > 0) 
      { 

       for (int i = 0; i <= row - 1; i++) 
       { 
        myList.Add(new MyMenuItem(Convert.ToInt32(ds.Tables["Topics"].Rows[i][0].ToString()), ds.Tables["Topics"].Rows[i][1].ToString(), 0)); 

        for (int j = 0; j <= row - 1; j++) 
        { 

         if (ds.Tables["Topics"].Rows[i][0].ToString() == ds.Tables["Topics"].Rows[j][2].ToString()) 
         { 

          myList.Add(new MyMenuItem(Convert.ToInt32(ds.Tables["Topics"].Rows[j][0].ToString()), ds.Tables["Topics"].Rows[j][1].ToString(), Convert.ToInt32(ds.Tables["Topics"].Rows[i][0].ToString()))); 



          for (int k = 0; k <= row - 1; k++) 
          { 

           if (ds.Tables["Topics"].Rows[j][0].ToString() == ds.Tables["Topics"].Rows[k][2].ToString()) 
           { 

            myList.Add(new MyMenuItem(Convert.ToInt32(ds.Tables["Topics"].Rows[k][0].ToString()), 
            ds.Tables["Topics"].Rows[k][1].ToString(), 
            Convert.ToInt32(ds.Tables["Topics"].Rows[j][0].ToString()))); 


            for (int l = 0; l <= row - 1; l++) 


             if (ds.Tables["Topics"].Rows[k][0].ToString() == ds.Tables["Topics"].Rows[l][2].ToString()) 
             { 

              myList.Add(new MyMenuItem(Convert.ToInt32(ds.Tables["Topics"].Rows[l][0].ToString()), 
               ds.Tables["Topics"].Rows[l][1].ToString(), Convert.ToInt32(ds.Tables["Topics"].Rows[k][0].ToString()))); 





       Dictionary<int, TreeViewItem> flattenedTree = new Dictionary<int, TreeViewItem>(); 
       foreach (MyMenuItem item in myList) 
       { 

        TreeViewItem treenode = new TreeViewItem(); 
        treenode.Header = item.TopicName; 
        treenode.Tag = item; 
        flattenedTree.Add(item.TopicID, treenode); 
        if (flattenedTree.ContainsKey(item.TopLevelID)) 
        { 


         flattenedTree[item.TopLevelID].Items.Add(treenode); 




        } 
        else 
        { 

         myTreeView.Items.Add(treenode); 





    } 
    public class MyMenuItem 
    { 

     internal int TopicID { get; set; } 
     internal string TopicName { get; set; } 
     internal int TopLevelID { get; set; } 


     internal MyMenuItem(int topicid, string topicname, int toplevelid) 
     { 

      TopicID = topicid; 
      TopicName = topicname; 
      TopLevelID = toplevelid; 




    private void myTreeView_SelectedItemChanged(object sender, RoutedEventArgs e) 
    { 

     **how can i code here?** 




    } 

} 

}

Répondre

0

Pour changer la police:

myWindow.FontFamily = new FontFamily("Font Name"); 

Lorsque le « Nom de la police » est le nom de types de polices connues, par exemple. "Times New Roman" ou "Comic Sans MS". Vous pouvez trouver plus d'utilisations here.

Pour changer la couleur de premier plan:

myWindow.Foreground = new SolidColorBrush(Colors.Red); 

Colors.Red est peut être une couleur « prédéfini » de votre choix.

Espérons que ça aide.

0

Pour répondre à votre "comment puis-je le code ici?" Plus précisément, vous pouvez effectuer les opérations suivantes pour accéder au TreeViewItem:

TreeViewItem selectedTreeViewItem = ((TreeViewItem)e.NewValue); 

Une fois que vous avez que vous pouvez accéder aux données que cet élément représente via son DataContext propriété comme ceci:

MyDataType myData = (MyDataType)selectedTreeViewItem.DataContext; 

popup de Dans la nouvelle fenêtre, vous pouvez créer une instance de votre sous-fenêtre Window et utiliser ShowDialog, si vous voulez qu'elle soit modale, ou Show si vous voulez autoriser l'ouverture simultanée de plusieurs fenêtres.

+0

merci pour votre commentaire. Mais je ne pourrais pas le faire fonctionner? où est-ce que je fais mal? –

Questions connexes