2013-01-01 92 views
1

鼠標在不同的圖像我使用了一個datatemplatedatagridtemplatecolumn
我試圖在Image在顯示上的鼠標不同的圖像。
鼠標懸停時,光標正在改變,但圖像沒有改變。顯示在WPF圖片

<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> 

那是綁定產生的問題嗎?
如何解決?

+1

如果你使用''Setter Property =「Image.Source」Value =「C:\ Images \ Coil3.png」/>'我的意思是'Property =「Image.Source」''? – Ramin

+0

我試過了。仍然是同樣的結果。任何其他建議? – Olivarsham

回答

4

你的問題是,圖像的初始來源直接定義在圖像實例的Source屬性上。

當有多個事情嘗試設置依賴項屬性的值時,框架必須決定使用哪個值。

在你的情況下,該值直接在圖像實例(本地)上設置,也由Trigger設置。
在這種情況下本地值總是勝利,所以當Trigger被激活時沒有任何反應。

如果您在樣式中設置初始值,Trigger會在嘗試更改圖像源時獲勝,並且當鼠標懸停在圖像上時會使圖像發生更改。

您可以在MSDN上了解更多關於如何解決Dependency Property的價值問題。

<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>