как выбрать treeviewitem в wpf - PullRequest
0 голосов
/ 13 октября 2009

Привет всем! я новичок в wpf, так что прости меня, я хочу больше! Я пытаюсь создать приложение. У меня есть древовидная структура, ограничивающая источник данных. это нормально. У меня две проблемы. Первый; Как я могу выбрать элемент из дерева? я хочу всплывающее окно, когда я выбираю элемент; когда я нажимаю на другой элемент; всплывающее окно другого окна. Вторая проблема в том, что я не могу изменить передний план и шрифт. Спасибо всем заранее

namespace CellBiology { открытый частичный класс TreeView { публичный TreeView () { 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?**




    }

}

}

Ответы [ 2 ]

0 голосов
/ 14 октября 2009

Чтобы изменить шрифт:

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

Где «Имя шрифта» - это имя известных типов шрифтов, например. «Times New Roman» или «Comic Sans MS». Вы можете найти больше использования здесь .

Чтобы изменить цвет переднего плана:

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

Где Colors.Red может быть любым «предопределенным» цветом на ваш выбор.

Надеюсь, это поможет.

0 голосов
/ 13 октября 2009

Чтобы ответить на ваше "как я могу здесь код?" в частности, вы можете сделать следующее для доступа к TreeViewItem:

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

Как только вы получите, вы можете получить доступ к данным, которые этот элемент представляет через его свойство DataContext, например:

MyDataType myData = (MyDataType)selectedTreeViewItem.DataContext;

Чтобы открыть новое окно, вы можете создать экземпляр вашего подкласса Window и использовать ShowDialog, если вы хотите, чтобы он был модальным, или Show, если вы хотите, чтобы несколько окон открывались одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...