不能在XAML中定义对象

本文关键字:定义 对象 XAML 不能 | 更新日期: 2023-09-27 18:08:54

我有一个用户控件。在此控件的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

不能在XAML中定义对象

中:

<ResourceStudio.Resource:CellColorConverter />

ResourceStudio.ResourceCellColorConverter的XML命名空间。

你需要将这个XML命名空间映射到。net命名空间:

<UserControl xmlns:ResourceStudio.Resource="clr-namespace:ResourceStudio.Resource;assembly=ResourceStudio" ... />

实际的名称空间和程序集名称取决于您在代码中如何调用它们。

这篇文章提供了更多的信息。

还可以使名称空间更短:

xmlns:local="clr-namespace:..."
<local:CellColorConverter ... >