我有一个松散的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);
顺便说一下,我意识到XAML很简单,我可以在代码中插入Style
,但这是一个hello world XAML;它将变得更复杂,涉及动画等。
P.S。另一种解决方案是将XAML文件附加到从Panel派生的自定义控件(不会导致Visual Studio 2008崩溃)或将触发器,数据触发器,输入操作和退出操作轻松附加到自定义控件。
答案 0 :(得分:5)
天哪,我想通了。我需要用命名空间指定程序集名称;像这样:
<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>
我会给那些能回答我的“P.S.”的人回答。在接下来的两天内提问。整个情况看起来有点潮湿,所以我真的对替代品感兴趣。
谢谢:)