Estoy usando WPF con el patrón Model-View-ViewModel. Por lo tanto, mi código detrás de los archivos (.xaml.cs) están todos vacíos, a excepción del constructor con una llamada a InitializeComponent. Por lo tanto, para cada archivo .xaml tengo un archivo coincidente, inútil, .xaml.cs.XAML sin el código .xaml.cs detrás de los archivos
Juro que leí en alguna parte que si el código detrás del archivo está vacío, excepto el constructor, hay una manera de eliminar el archivo del proyecto por completo. Después de buscar en la red, parece que la forma adecuada de hacerlo es utilizar la 'x: Subclase' atributo:
<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">
Esto hace lo siguiente en el archivo generado .g.cs:
- Elimina el modificador de clase 'parcial' en MyClass.
- Agrega la clase 'UserControl' a su lista de subclase.
Parece perfecto. De hecho, si todavía tiene el archivo .xaml.cs en la compilación, ya no compila debido al parcial faltante, así que estoy pensando que esto debe ser correcto. Sin embargo, si elimino el archivo superfluo de la compilación y ejecución, el control no se inicializa correctamente (está en blanco). Esto es, supongo, porque InitializeComponent() no se está llamando. Veo que InitializeComponent no es virtual, por lo que parece que no habría forma de que la clase base lo llamara (a falta de usar la reflexión).
¿Echo de menos algo?
Gracias!
Eric
Gracias Scott. Este es definitivamente un mejor enfoque. – Eric
+1 También lo uso de esta manera. Funciona tan bien que es casi como magia. –
Nota: está disponible en WPF, pero no en Silverlight. –
MrSharps