2010-11-22 78 views
1

我有一個鬆散的XAML文件...如何使鬆散XAML內容感知定製的控制

<Style 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:MyNamespace" 
    TargetType="{x:Type local:CustomControl}"> 
    <Setter Property="HoverOpacity" Value="1.0"/> 
</Style> 

...我想在運行時加載。當我這樣做時,我得到一個異常聲明,「類型引用無法找到名爲'CustomControl'的公共類型。」如何讓鬆散的XAML知道我的命名空間?

我需要使用HoverOpacity這是CustomControl的依賴項屬性。下面是我目前使用加載XAML代碼:

var resource = Application.GetResourceStream(new Uri("pack://application:,,,/Assets/HoverStyle.xaml")); 

XamlReader.Load(resource.Stream); 

BTW,我意識到XAML很簡單,我可以只插入代碼Style,但是這是一個Hello World XAML;它會變得更復雜,涉及動畫等。

P.S.另一種解決方案是將XAML文件附加到派生自Panel的自定義控件(不會導致Visual Studio 2008崩潰的方法)或者輕鬆附加觸發器,數據觸發器,入口動作和退出動作的方式自定義控件。

回答

4

Gosh補充一下,我明白了。我需要用命名空間指定程序集名稱;像這樣:

<Style 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:MyNamespace;assembly=MyAssembly" 
    TargetType="{x:Type local:CustomControl}"> 
    <Setter Property="HoverOpacity" Value="1.0"/> 
</Style> 

我給的答案信貸的人誰可以回答我的「附:」問題在未來兩天內。這整個情況似乎有點潮溼,所以我會對替代品非常感興趣。

謝謝:)