无法找到带有xmlns前缀的StaticResource?

时间:2013-03-12 15:55:28

标签: c# wpf

鉴于下面的“部分”xaml:

<UserControl x:Class="MyProject.Views.SelectTestView"
             xmlns="http://schemas.microsoft.com etc... etc..."
             xmlns:converters="clr-namespace:MyProject.Converters"
             mc:Ignorable="d" 
             d:DesignHeight="566" d:DesignWidth="1160">

<GridViewColumn Header="Status" Width="auto">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding StatusTypeName}"
                       Foreground="{Binding StatusTypeName, Converter={StaticResource StatusTypeNameToBrushConverter}}"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

My Converter类“StatusTypeNameToBrushConverter.cs”位于我上面声明的“converter”命名空间中。当我使用我的xmlns别名为静态资源添加前缀时,我仍然会收到警告

  

“Resrouce”StatusTypeNameToBrushConverter“无法找到”。

我添加到前缀/解析我的静态资源的代码如下所示。

Foreground="{Binding StatusTypeName, Converter={StaticResource converters:StatusTypeNameToBrushConverter}}"/>

为什么这是错误的,我需要添加什么来限定位置才能找到我的转换器?转换器代码旨在帮助转换由此xaml组成的视图。

感谢。

2 个答案:

答案 0 :(得分:1)

您必须包括:

<UserColtrol.Resources>
   <converters:StatusTypeNameToBrushConverter x:Key="statusTypeNameToBrushConverter"/>
</UserColtrol.Resources>

静态资源就是这样:

Foreground="{Binding StatusTypeName, Converter={StaticResource statusTypeNameToBrushConverter}}"/>

答案 1 :(得分:1)

您正在引用StaticResource,但您尚未定义任何。 你可以这样做:

<UserControl x:Class="MyProject.Views.SelectTestView"
             xmlns="http://schemas.microsoft.com etc... etc..."
             xmlns:converters="clr-namespace:MyProject.Converters"
             mc:Ignorable="d" 
             d:DesignHeight="566" d:DesignWidth="1160">
<UserControl.Resources>
        <ResourceDictionary>
           <converters:StatusTypeNameToBrushConverter x:Key="StatusTypeNameToBrushConverter" />
        </ResourceDictionary>
    </UserControl.Resources>

然后你就像第一次使用它一样:

Converter={StaticResource StatusTypeNameToBrushConverter}