0

この投稿のとおり、私はいくつかのマルチトリガーを使用しています。バインディングとエラーは以下のとおりです。

カスタムマークアップ拡張機能を使用してリソース画像を表示しているので、疑わしいかもしれませんが、以前にスタイルで使用したことがあるので、そうは思いません。

エラーメッセージは、タイプに間違ったプロパティを適用していることを示していますが、その理由はまだわかりません。

乾杯、
ベリール

トリガー

<Style x:Key="AvatarPathImageStyle" TargetType="{x:Type Image}">
    <Setter Property="Source" Value="{Binding AvatarPath}"/>
    <Setter Property="Height" Value="96"/>
    <Setter Property="Width" Value="96"/>
    <Setter Property="Stretch" Value="UniformToFill"/>
    <Style.Triggers>

        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding AvatarPath}" Value="{x:Null}" />
                <Condition Binding="{Binding Gender}" Value="{x:Static domain:Gender.Female}"/>
            </MultiDataTrigger.Conditions>
            <Setter Property="Source" Value="{resx:Resx ResxName=Smack.Parties.Presentation.Resources.PersonDetailView, Key=Img_Female}"/>
        </MultiDataTrigger>

        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding AvatarPath}" Value="{x:Null}" />
                <Condition Binding="{Binding Gender}" Value="{x:Static domain:Gender.Male}"/>
            </MultiDataTrigger.Conditions>
            <Setter Property="Source" Value="{resx:Resx ResxName=Smack.Parties.Presentation.Resources.PersonDetailView, Key=Img_Male}"/>
        </MultiDataTrigger>
        </MultiDataTrigger>

    </Style.Triggers>
</Style>

バインディング

<Image Grid.Column="1" Grid.Row="4" 
       HorizontalAlignment="Center" Margin="10, 0" Style="{StaticResource AvatarPathImageStyle}"
      />

エラー

System.Windows.Markup.XamlParseException occurred
...  InnerException: System.ArgumentException
       Message='System.Windows.Controls.Image' is not a valid value for the 'System.Windows.Controls.Image.Source' property on a Setter.
 ...

アップデート

画像に静的にアクセスすると、無効なタイプのエラーも発生します。

<Setter Property="Source" Value="{x:Static imgResources:PersonDetailView.Img_Female}"/>
4

1 に答える 1

1

コメントは回答に変換されました:

エラーの理由は、resxファイルに保存されている画像の種類がSystem.Windows.Drawing.Imageであり、WPFと直接互換性がないためです。コンバーターを作成することはできますが、リソースディクショナリを使用する強い理由がない限り、画像を埋め込み、XAMLファイルに関連するURLで参照します。

于 2012-05-18T07:08:09.787 に答える