我有兩個具有通用底層基礎結構的項目。首先是Silverlight 3中,第二個是的Silverlight 4.何時DependencyProperty的DefaultValue通過PropertyMetadata定義獲得它的值?
我有一個ViewRegionControl,這是我在XAML聲明來定義區域。 ViewRegionControl類負責管理哪些註冊的視圖可見和更多。它有一個依賴項屬性,用作註冊區域的註冊表。
public static readonly DependencyProperty ViewRegionRegistryProperty = DependencyProperty.Register(
"ViewRegionRegistry",
typeof(IViewRegionRegistry),
typeof(ViewRegionControl),
new PropertyMetadata(IoC.TryResolve<IViewRegionRegistry>()));
public IViewRegionRegistry ViewRegionRegistry
{
get { return (IViewRegionRegistry)GetValue(ViewRegionRegistryProperty); }
set { SetValue(ViewRegionRegistryProperty, value); }
}
將默認值作爲從IoC容器實例化的對象傳遞。在這兩種實現中,ViewRegionRegistry不是由XAML設置的,只能通過這個位置。
預期的初始化在我的Silverlight 3項目中成功發生,但不在我的Silverlight 4項目中。 Silverlight 4中發生了哪些變化?在Silverlight 4中,依賴項屬性是否會默認獲取它的默認值?
這裏的意圖是建立通過ViewRegionRegistry DP獲得一個Singleton參考。
檢查http://msdn.microsoft.com/en-us/library/cc903949%28v=VS.95%29.aspx
雖然,我用一個DP在另一個DP的回調和MSDN清清楚楚地寫着:
「,以避免這些問題的方法之一是確保回調只使用其他依賴屬性,那每個這樣的依賴項屬性都有一個建立的默認值作爲其註冊元數據的一部分。「
我做到了。爲什麼版本之間的行爲不同?
以何種方式是「Silverlight 4的一個」 unsuccessfull?一個錯誤? IoC沒有找到一些提供`IViewRegionRegistry`實現的導出?什麼? – AnthonyWJones 2010-12-10 08:34:40