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>

私のConverterクラス"StatusTypeNameToBrushConverter.cs"は、上記で宣言した"converters"名前空間にあります。静的リソースの前にxmlnsエイリアスを付けると、まだ次のような警告が表示されます。

「Resrouce"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 に答える