0

すべて、私はユーザーコントロールを持っています。このコントロールの 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:\Camus\ResourceStudio\ResourceStudio\ResourceStudio\Resource\Resource.xaml

4

1 に答える 1

3

XAML では:

<ResourceStudio.Resource:CellColorConverter />

はのResourceStudio.ResourceXML 名前空間ですCellColorConverter

この XML 名前空間を .NET 名前空間にマップする必要があります。

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

実際の名前空間とアセンブリ名は、コード内でそれらを何と呼んでいるかによって異なります。

詳細については、この記事を参照してください。

また、名前空間を短くすることもできます:

xmlns:local="clr-namespace:..."

<local:CellColorConverter ... >
于 2013-04-13T15:05:58.193 に答える