【发布时间】:2010-12-22 22:26:42
【问题描述】:
我正在使用带有模型-视图-视图模型模式的 WPF。因此,我的文件后面的代码 (.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 不是虚拟的,所以基类似乎没有办法调用它(没有使用反射)。
我错过了什么吗?
谢谢!
埃里克
【问题讨论】:
标签: wpf xaml mvvm code-behind