在WPF ResourceDictionary中指定程序集以解决Ambiguous类型引用

时间:2014-01-21 11:49:27

标签: c# .net wpf wpftoolkit

我有一个像这样的ResourceDictionary文件:

<ResourceDictionary 
    xmlns:vsm ="clr-namespace:System.Windows;assembly=PresentationFramework"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    ...
</ResourceDictionary>

在此页面中使用

<Page xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" 
      x:Class="MyProject.GUI.MenuPage"

      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

      ....

      <Page.Resources>
        <ResourceDictionary Source="/GUI/ResourcesDictionary.xaml">
        </ResourceDictionary>
      </Page.Resources>

      ....
</Page>

此页面使用wpf工具包组件,autocompletebox,因此我将WPFToolkit库(可用的最新版本here)作为项目引用。它在运行时工作正常,但我在visual studio designer中遇到了这个错误:

  

不明确的类型参考。名为“VisualState”的类型出现在   至少两个名称空间,'System.Windows'和'System.Windows'。考虑   调整程序集XmlnsDefinition属性。

这发生在ResourceDictionary文件的第一行(我不使用此文件中的工具包)。查看SO中的其他问题,我看到工具箱中有一些类具有相同的命名空间,现在已经合并到框架4.0中,所以我想我需要在ResourceDictionary中指定程序集,因此它不会导入类中的类工具包。我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您没有问题,可以设置程序集的别名。

在Visual Studio

中的引用上设置此属性

alias property