2013-04-13 57 views
0

全部,我有一個用戶控件。在XAML標記此控件我要定義一個資源(instatiate稱爲類CellColorConverter這是在相同的命名空間控件定義的cellColorConverter的對象。我有無法在XAML中定義對象

<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:\加繆\ ResourceStudio \ ResourceStudio \ ResourceStudio \資源\ Resource.xaml

回答

3

在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 ... > 
+0

+1非常感謝您的時間。我相應地改變了這一點,但是我仍然在名稱空間「clr-namespace = ResourceStudio.Resource; assembly = ResourceStudio」_中不存在名稱「CellColorConverter」 – MoonKnight

+1

像'clr-namespace:ResourceStudio.Resource; assembly = ResourceStudio'一樣,在'clr-namespace'之後必須有一個冒號':'而不是'='。 – Clemens

+0

@Clemens,歡呼聲,我已經更新了答案。 –