我有一個小窗口,當我嘗試加載應用程序啓動時。這裏是(鬆散的)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/>
或事件將其移動一行下來,我得到以下錯誤:
Additional information: 'Cannot create unknown type '{ http://schemas.microsoft.com/winfx/2006/xaml/presentation }Resx'.' Line number '13' and line position '33'.
什麼是真奇怪,我是說,如果我更換ConnectionStatusIndicator與來自同一個程序集的另一個自定義控件一起,我得到錯誤。另一個自定義控件非常相似,但有更多的屬性。
任何人都可以解釋這裏發生了什麼?
不應該命名空間爲:CNC.UI.Controls在XAML? – CSharpie
這是什麼?{ResxName = MyApp.MainDialog,Key = MyLabel}? –
之前我曾經被咬過的一件事是,如果依賴項屬性不公開,設計師喜歡採取行動。嘗試將「IsConnectedProperty」公開標記,看看它是否有幫助。 – Psytronic