Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > RoutingStrategy, запрет вызова родительских событи


Автор: Hohhi 26.1.2011, 00:46
Добрый вечер! Перевожу своё виндоус форм приложение под WPF, конкретно сейчас справку. При выборе элемента слева в TreeView, в правом текст боксе открывается справочный файл. Всё просто. Вот Windows Forms код:
Код

        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            string fileName = e.Node.Text;
            var tn = e.Node;
            while (tn.Parent != null)
            {
                fileName = tn.Parent.Text+"\\"+fileName;
                tn = tn.Parent;
            }
            string fileContents = null;
            if (File.Exists(fileName))
            {
                try
                {
                    fileContents = File.ReadAllText(fileName);
                    textBox1.Text = fileContents;
                }
                //return false if problem opening file
                catch (Exception) { MessageBox.Show("Help files missing"); }
            }
       }


Теперь я столкнулся с проблемой RoutingStrategies в WPF. Я не хочу, чтобы моё событие не вызывало себя же для верхних узлов. Хотелось бы поменять RoutingStrategy в Direct, но судя по всему это невозможно. Пытался ставить e.Handled в true. Тоже не выходит. И мне не понятно, как переписать подобную штуку:
Код

            while (tn.Parent != null)
            {
                fileName = tn.Parent.Text+"\\"+fileName;
                tn = tn.Parent;
            }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)