2011-04-27 8 views
1

어제 게시 한 질문의 후속 조치입니다. here. 아이콘에 바인딩하는 작업은 H.B.에 게시 된 코드 스 니펫을 사용하지만, 트리거 조건을 추가하여 마우스 오버시 다른 아이콘이 표시되는 것을 파악할 수 없습니다. 현재 코드는 다음과 같습니다바인딩에 트리거 사용?

xmlns:res="clr-namespace:MyProject.Resources" 
    xmlns:Helpers="clr-namespace:MyProject.Converters" 
    ... 
    <Image Name="imgMin" 
      Grid.Column="0" 
      Stretch="UniformToFill" 
      Cursor="Hand" 
      MouseDown="imgMin_MouseDown"> 
     <Image.Source> 
      <Binding Source="{x:Static res:AppResources.minimize}"> 
       <Binding.Converter> 
        <Helpers:IconToImageSourceConverter/> 
       </Binding.Converter> 
      </Binding> 
     </Image.Source> 
    </Image> 

내가 다른 아이콘 (고해상도 : AppResources.minimize_glow)이되도록 여기 변경해야 할 마우스 오버에 표시됩니다? 나는 어딘가에있는 방아쇠를 당기기에 주변에 시도했다, 그러나 Image.Source는 다른 아이를 받아들이지 않는다, 바인딩은 직접 내용을 지원하지 않는다, Image.Source에 변화는 Binding를 포함 할 수 없기 때문에 Image.Style는 작동하지 않는다. . 여기 아이디어가 부족해. 내 Google-fu는 유용성이 없다. 게다가, 내가 트리거와 함께 작동하도록 할 수 있다고해도, 하이라이트 된 아이콘에 Binding을 넣어 트리거에 넣는 것은 아마도 내 다음 두통 일 것입니다. 이것을 할 수있는 방법이 있어야합니다, 그렇죠?

답변

1

트리거가 설정자와 결합 된 스타일을 추가하여 마우스가 이미지 위에있는 동안 이미지 소스를 새 이미지 소스로 바꿀 수 있습니다. 스타일에있는 모든 설정자는 이미지에 속성을 직접 설정하면 아무 효과가 없음을 기억하십시오. 이것이 스타일에 기본 설정자가있는 이유입니다. 현재 사용할 수있는 Visual Studio가 없으므로 테스트 할 수 없지만 잘하면 스 니펫이 안내해 줄 것입니다. 당신은 행동을 사용할 수

<Image Name="imgMin" 
     Grid.Column="0" 
     Stretch="UniformToFill" 
     Cursor="Hand" 
     MouseDown="imgMin_MouseDown"> 
    <Image.Style> 
     <Style> 
      <Style.Resources> 
       <Helpers:IconToImageSourceConverter x:Key="IconToImageSourceConverter"/> 
      </Style.Resources> 
      <Setter Property="Image.Source"> 
       <Setter.Value> 
        <Binding Source="{x:Static res:AppResources.minimize}" 
          Converter="{StaticResource IconToImageSourceConverter}"/> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <Trigger Property="Image.IsMouseOver" Value="True"> 
        <Setter Property="Image.Source"> 
         <Setter.Value> 
          <Binding Source="{x:Static res:AppResources.minimize_glow}" 
            Converter="{StaticResource IconToImageSourceConverter}"/> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 
+0

Perfect! 이것은 내가 필요한 것입니다. 고맙습니다! – Swooper

0

는/당신이 당신의 표현의 조화 디렉토리에서 찾을 수 System.Windows.Interactivity.dll 라이브러리에서 트리거합니다.

이러한 트리거/비헤이비어는 UI 요소가 아니기 때문에 요소의 하위 요소 외에도 삽입 할 수 있습니다.

그런 다음 MouseEnter, MouseLeave 이벤트에 첨부하고 원하는대로 이미지를 변경하는 비헤이비어를 만들 수 있습니다.

당신은이 작업이 완료되는 예를 볼 수있다 (행동에 마우스를 보면) : http://www.silverlightshow.net/items/Behaviors-and-Triggers-in-Silverlight-3.aspx

이 (포스트 실버입니다뿐만 아니라 WPF에 대한 작동합니다).

관련 문제