【问题标题】:Cannot Define Object in XAML无法在 XAML 中定义对象
【发布时间】:2013-04-13 15:03:06
【问题描述】:

所有,我有一个用户控件。在此控件的 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
   {
       // ...     
   }
}

我仍然收到以下错误

命名空间“clr-namespace:ResourceStudio.Resource;assembly=ResourceStudio”中不存在名称“CellColorConverter”。 F:\Camus\ResourceStudio\ResourceStudio\ResourceStudio\Resource\Resource.xaml

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    在 XAML 中:

    <ResourceStudio.Resource:CellColorConverter />
    

    ResourceStudio.ResourceCellColorConverter 的 XML 命名空间。

    您需要将此 XML 命名空间映射到 .NET 命名空间:

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

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

    This article 提供更多信息。

    此外,您可以缩短命名空间:

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

    【讨论】:

    • +1 非常感谢您抽出宝贵时间。我已对此进行了相应更改,但我仍然得到名称“CellColorConverter”在命名空间“clr-namespace=ResourceStudio.Resource;assembly=ResourceStudio”中不存在
    • clr-namespace 后面必须有一个冒号: 而不是=,例如clr-namespace:ResourceStudio.Resource;assembly=ResourceStudio
    • @Killercam,你在哪里定义 CellColorConverter 类?您必须在字符串中使用该类型的命名空间和程序集名称,如图所示。
    • @DrewNoakes 我已经更新了我的问题。我仍然收到错误消息。再次感谢您在这里的时间......
    • @Killercam - 如果您的 UsercontrolConverter 位于同一组件中,您可以省略组件部分 - xmlns:local="clr-namespace:ResourceStudio.Resource
    猜你喜欢
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多