如何使松散的Xaml内容了解自定义控件

Jor*_*dan 2 wpf custom-controls xamlreader

我有一个松散的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>
Run Code Online (Sandbox Code Playgroud)

...我想在运行时加载.当我这样做时,我得到一个异常,说明"类型引用找不到名为'CustomControl'的公共类型." 如何让松散的XAML知道我的命名空间?

我需要使用HoverOpacity哪个是依赖属性CustomControl.这是我目前用于加载XAML的代码:

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

XamlReader.Load(resource.Stream);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我意识到XAML很简单,我可以插入Style代码,但这是一个hello world XAML; 它将变得更复杂,涉及动画等.

PS另一种解决方案是将XAML文件附加到从Panel派生的自定义控件(不会导致Visual Studio 2008崩溃)或者轻松附加触发器,数据触发器,进入操作和退出操作的方法自定义控件.

Jor*_*dan 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>
Run Code Online (Sandbox Code Playgroud)

我将在接下来的两天内回复任何可以回答我的"PS"问题的人.整个情况似乎有点潮湿,所以我真的对替代品感兴趣.

谢谢 :)