我有一个小窗口,我试图在我的应用程序启动时加载它。这是(松散的)XAML:
<ctrl:MainWindow
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ctrl="clr-namespace:Controls;assembly=Controls">
<Grid>
<ctrl:ConnectionStatusIndicator/>
<TextBlock Grid.Row="2" Text="{Resx ResxName=MyApp.MainDialog, Key=MyLabel}"/>
</Grid>
</ctrl:MainWindow>
请注意名为 ConnectionStatusIndicator 的自定义控件。它的代码是:
using System.Windows;
using System.Windows.Controls;
namespace Controls
{
public class ConnectionStatusIndicator : Control
{
public ConnectionStatusIndicator()
{
}
static ConnectionStatusIndicator()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(ConnectionStatusIndicator),
new FrameworkPropertyMetadata(typeof(ConnectionStatusIndicator)));
IsConnectedProperty = DependencyProperty.Register("IsConnected", typeof(bool), typeof(ConnectionStatusIndicator), new FrameworkPropertyMetadata(false));
}
public bool IsConnected
{
set { SetValue(IsConnectedProperty, value); }
get { return (bool)GetValue(IsConnectedProperty); }
}
private static DependencyProperty IsConnectedProperty;
}
}
现在,这就是奇怪的地方(至少对我来说)。使用上面显示的 XAML,我的应用程序将构建和运行得很好。但是,如果我删除以下行:
<ctrl:ConnectionStatusIndicator/>
或事件将其向下移动一行,我收到以下错误:
附加信息:'无法创建未知类型'{ http://schemas.microsoft.com/winfx/2006/xaml/presentation }Resx'。行号“13”和行位置“33”。
对我来说真正奇怪的是,如果我用同一个程序集中的另一个自定义控件替换 ConnectionStatusIndicator,我会收到错误消息。另一个自定义控件非常相似,但具有更多属性。
谁能解释这里发生了什么?