2010-11-22 95 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> 

我给的答案信贷的人谁可以回答我的“附:”问题在未来两天内。这整个情况似乎有点潮湿,所以我会对替代品非常感兴趣。

谢谢:)