Я использую WPF с шаблоном Model-View-ViewModel. Таким образом, мой код за файлами (.xaml.cs) пуст, кроме конструктора с вызовом InitializeComponent. Таким образом, для каждого .xaml файла у меня есть соответствующий, бесполезный файл .xaml.cs.
Клянусь, я где-то читал, что если код за файлом пуст, кроме конструктора, есть способ полностью удалить файл из проекта. После поиска в сети кажется, что подходящий способ сделать это - использовать атрибут "x: Subclass":
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
x:Class="MyNamespace.MyClass"
x:Subclass="UserControl"
d:DesignWidth="700" d:DesignHeight="500">
В созданном файле .g.cs выполняется следующее:
- Удаляет модификатор класса "partial" на MyClass.
- Добавляет класс 'UserControl' в свой список подклассов.
Кажется совершенным. Действительно, если у вас все еще есть файл .xaml.cs в сборке, он больше не компилируется из-за отсутствия частичного, поэтому я думаю, что это должно быть правильно. Однако, если я удалю лишний файл из сборки и запуска, элемент управления не будет инициализирован правильно (он пуст). Это, я полагаю, потому что InitializeComponent() не вызван. Я вижу, что InitializeComponent не является виртуальным, поэтому кажется, что базовый класс не сможет назвать его (не используя отражение).
Я что-то пропустил?
Спасибо!
Эрик