代码之家  ›  专栏  ›  技术社区  ›  Jordan

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

  •  2
  • Jordan  · 技术社区  · 14 年前

    我有一个松散的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;它将变得更加复杂,涉及到动画等等。

    另一种解决方案是将XAML文件附加到从面板派生的自定义控件(不破坏Visual Studio 2008)或容易地将触发器、数据触发器、入口动作和退出操作附加到自定义控件的方式。

    1 回复  |  直到 14 年前
        1
  •  5
  •   Jordan    14 年前

    天哪,我想出来了。我需要用名称空间指定程序集名称;如下所示:

    <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.”问题,我将给予表扬。整个情况看起来有点湿,所以我真的对其他选择感兴趣。

    谢谢:)