2

鉴于下面的“部分”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””。

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

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

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

谢谢。

4

2 回答 2

1

您必须包括:

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

静态资源是这样的:

Foreground="{Binding StatusTypeName, Converter={StaticResource statusTypeNameToBrushConverter}}"/>
于 2013-03-12T16:07:51.087 回答
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}
于 2013-03-12T16:18:33.523 回答