Когда я это сделаю, новое (скопированное ) метод InitializeComponent() окна всегда выдает ошибку. Как можно аккуратно скопировать окно (и его код и т. д.) в обозревателе решений?
На этот вопрос частично ответили здесь: Копирование и вставка окна WPF выдает ошибку, однако ответ не решил мою проблему.
Мой подход (который не работает):
- Создайте окно и назовите его WindowTest.
- В обозревателе решений выберите WindowTest и скопируйте его, а затем вставьте в тот же проект.
- Переименуйте. новое скопированное окно в WindowTestCopy.
- В WindowTestCopy измените свойство x:class в xaml на WindowTestCopy вместо WindowTest.
- Откройте код в WindowTestCopy и измените все ссылки на WindowTest на WindowTestCopy
- Компилировать
Фактическое: ошибка компиляции «Невозможно получить доступ к нестатическому методу «InitializeComponent» в статическом контексте».
У меня только одна ошибка. Очевидно, что InitializeComponent() становится неоднозначной ссылкой, но мне не ясно, как вручную отредактировать код, чтобы это исправить. Я бы хотел, чтобы VS или Resharper автоматически помогали мне в этом.
ОБНОВЛЕНИЕ
WindowTest содержит два пользовательских элемента управления, о которых я не упоминал ранее. После копирования/вставки по какой-то причине следующие элементы xaml в WindowTestCopy стали неверными:
xmlns:userControls....(ellided)
xmlns: userControls....(ellided)
Удалив их, Resharper определил, что в объектах userControl отсутствуют ссылочные теги xmlns, и спросил меня, хочу ли я импортировать их автоматически. Я выбрал да. После того, как Resharper добавил недостающие ссылочные теги xmlns, мне удалось скомпилировать (все ошибки исчезли).
У меня нет объяснения, почему это произошло. При воспроизведении я не редактирую xaml, поэтому он должен быть идентичен исходному xaml. Это любопытное поведение, но, по крайней мере, есть описанный обходной путь.
Подробнее здесь: https://stackoverflow.com/questions/276 ... ave-errors