2012-06-09 3 views
-1

У меня есть куча DataGrids в моем приложении. Мне нужно переопределить некоторый защищенный виртуальный метод для всех из них. Есть ли что-то лучше, чем использование производного класса DataGrid с не так знакомым именем? Я хотел бы, чтобы решение, подобное прикрепленному свойству, могло указывать на поведение с заданными свойствами.Переопределение защищенного виртуального без наследования

+0

Я не уверен, что понимаю, что вы спрашиваете. Не могли бы вы перефразировать вопрос? –

+0

Что случилось с наследованием в этом случае? Не проблема, которую вы не можете назвать своей производный класс DataGrid, но должен выбрать другое имя? Если да, подумайте о том, как странно было бы, чтобы разброс одинаково названных классов делал все по-другому. – Alan

+0

Что я хочу сделать, это исправить WPFToolkit DataGrid странно b ug http://stackoverflow.com/questions/4017786/wpf-recursive-call-to-automation-peer-api-is-not-valid I.e. переопределить OnCreateAutomationPeer(). Но я не хочу делать изменения во всем коде приложения. Я не думаю, что это означает, что DataGrid будет делать разные. Я просто пытаюсь избавиться от странного исключения. – vkrzv

ответ

0

Вы должны переопределить. Переопределите метод в вашем собственном MyOwnDataGrid (или более коротком имени). Затем используйте этот класс, если вы используете datagrid. Если у вас есть сотни решеток, у вас должен быть нечетный дизайн приложения. Если вы не хотите изменять каждое место, где вы создаете new DataGrid(), я считаю, что вы можете изменить директивы using.

using DatGrid = My.NameSpace.MyOwnDataGrid; 

Вы все еще должны сделать это для каждого файла, используя DataGrids, и это делает код немного запутанным, чтобы читать, так что я думаю, что лучше просто глобальный поиск/замена в «новой DataGrid (» в «new MyOwnDataGrid (« и вы закончили ».

+0

Спасибо, но все мои DataGrid определены в XAML, а не новинкой. – vkrzv

+0

ОК. Замена должна работать нормально и в XAML. –

0

В C# вы не можете переопределить метод, не наследуя от этого метода. MSDN-Override. Единственный способ переопределить метод - наследовать от этого базового класса. Есть ли причина, по которой вы не хотите наследовать базовый класс?

Смежные вопросы