无法找到带有xmlns前缀的StaticResource

本文关键字:xmlns 前缀 StaticResource | 更新日期: 2023-09-27 18:03:27

给定下面的"partial" 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>

我的转换器类"StatusTypeNameToBrushConverter.cs"是在我的"转换器"命名空间,我已经在上面声明。当我用我的xmlns别名前缀静态资源时,我仍然得到一个警告,

"资源"StatusTypeNameToBrushConverter" cannot be found".

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

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

为什么这是错误的,我需要添加什么来限定位置,以便找到我的转换器?转换器代码旨在帮助转换由这个xaml.

组成的视图。

谢谢。

无法找到带有xmlns前缀的StaticResource

你必须包括:

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

静态资源是这样的:

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

您正在引用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}