Я использую 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 выполняется следующее:
- Удаляет «частичный» модификатор класса в MyClass.
- Добавляет класс 'UserControl' в свой список подклассов.
Кажется идеальным. Действительно, если у вас все еще есть файл .xaml.cs в сборке, он больше не компилируется из-за отсутствующей части - поэтому я думаю, что это должно быть правильно. Однако, если я удаляю лишний файл из сборки и запуска, элемент управления не инициализируется правильно (он пуст). Это, я полагаю, потому что InitializeComponent () не вызывается. Я вижу, InitializeComponent не является виртуальным, поэтому, похоже, базовый класс не сможет вызвать его (если не использовать отражение).
Я что-то упустил?
Спасибо!
Эрик