1

でマウスオーバーすると別の画像を表示しようとしていdatatemplateます。 マウスオーバーすると、カーソルは変化しますが、画像は変化しません。 datagridtemplatecolumn
Image

 <DataTemplate x:Key="MyDataTemplate" DataType="DataRowView">
        <StackPanel Orientation="Horizontal" Background="Transparent">
            <Image Margin="0,0,0,0"   Width="50" Height="50" Source="{Binding Converter={StaticResource SetImgToDG}}" ToolTip="{Binding}" >
                <Image.Resources>
                    <Style TargetType="{x:Type Image}">
                        <Style.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <!-- Hover image -->
                                <Setter Property="Cursor" Value="Hand"/>
                                <Setter Property="Source" Value="C:\Images\Coil3.png"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </Image.Resources>
            </Image>
        </StackPanel>
    </DataTemplate>  

そのバインディングが問題を引き起こしていますか??
どうやって解決する??

4

1 に答える 1

5

問題は、画像の初期ソースがSource画像インスタンスのプロパティで直接定義されていることです。

依存関係プロパティの値を設定しようとするものが複数ある場合、フレームワークは使用する値を決定する必要があります。

あなたの場合、値はイメージインスタンスに直接(ローカルに)設定されており、Trigger.
この場合、常にローカル値が優先されるため、Triggerがアクティブ化されても何も起こりません。

代わりにスタイルに初期値を設定するTriggerと、画像ソースを変更しようとすると が優先され、マウスがその上に置かれたときに画像が変更されます。

MSDNDependency Propertyで a の値がどのように解決されるかについて詳しく読むことができます。

<Image.Resources>
    <Style TargetType="{x:Type Image}">
        <!-- Set the initial source in the style so the trigger can change it -->
        <Setter Property="Source" Value="{Binding Converter={StaticResource SetImgToDG}}" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <!-- Hover image -->
                <Setter Property="Cursor" Value="Hand"/>
                <Setter Property="Source" Value="C:\Images\Coil3.png"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Image.Resources>
于 2013-01-01T15:20:35.257 に答える