全部,我有一个用户控件。在这个控件的XAML标记中,我想定义一个资源(实例化一个名为cellColorConverter
的对象CellColorConverter
,该对象在与控件相同的命名空间中定义。我有
<UserControl x:Class="ResourceStudio.Resource.Resource"
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"
mc:Ignorable="d" Height="331.2" Width="340">
<UserControl.Resources>
<ResourceStudio.Resource:CellColorConverter x:Key ="cellColorConverter"/> // <- Error.
</UserControl.Resources>
这会产生编译时错误
未定义名称空间前缀
ResourceStudio.Res
。
我在这里做错了什么?
感谢您的时间。
更新:我现在有
xmlns:local="clr-namespace:ResourceStudio.Resource;assembly=ResourceStudio"
mc:Ignorable="d" Height="331.2" Width="340">
<UserControl.Resources>
<local:CellColorConverter x:Key ="cellColorConverter"/>
</UserControl.Resources>
CellColorConverter
类位于名称空间ResourceStudio.Resource
中,定义为
namespace ResourceStudio.Resource
{
public class CellColorConverter : IMultiValueConverter
{
// ...
}
}
我仍然收到以下错误
命名空间“CellColorConverter”在命名空间“clr-namespace:ResourceStudio.Resource; assembly = ResourceStudio”中不存在。 F:\加缪\ ResourceStudio \ ResourceStudio \ ResourceStudio \资源\ Resource.xaml
答案 0 :(得分:3)
在XAML中:
<ResourceStudio.Resource:CellColorConverter />
ResourceStudio.Resource
是CellColorConverter
的XML命名空间。
您需要将此XML命名空间映射到.NET命名空间:
<UserControl xmlns:ResourceStudio.Resource="clr-namespace:ResourceStudio.Resource;assembly=ResourceStudio" ... />
实际的命名空间和程序集名称取决于您在代码中调用它们的内容。
This article提供了更多信息。
此外,您可以缩短命名空间:
xmlns:local="clr-namespace:..."
<local:CellColorConverter ... >