2014-02-21 3 views
1

그림자 이미지을 마우스를 이미지 위에 올리면 추가 할 이미지가 있습니다.이미지 개체의 속성 값 추출 중

`<Image Name="image1" Stretch="Fill" Source="/Start;component/Images/100px-The_alliance_logo.jpg" MouseEnter="MouseOver" />` 

마우스를 이미지 위에 올릴 때마다 이름의 값을 추출하고 싶습니다. C#에서 다음 코드를 코딩했습니다.

private void MouseOver(object sender, MouseEventArgs e) 
    { 
      object ObjectName = new object(); 
      ObjectName = Convert.ToString(sender.GetType().GetProperty("Name").GetValue(sender, null)); 
      String Obj = (String)ObjectName; 
      Obj.Effect = shade(Obj); 
    } 

나는 말한다 Obj.Effect = shade(Obj);에 오류가 점점 오전 : "'문자열' '효과'에 대한 정의 및 수 타입 '문자열'의 첫 번째 인수를 받아들이는없는 확장 메서드 '효과'가 포함되어 있지 않습니다 찾았습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?) "

어떻게 해결할 수 있습니까?

+0

귀하의 질문에 ASP.NET으로 태그가 지정되었습니다. 나는 그것을 뒤로 굴렸다. 다소 명확했지만 질문을 게시 할 때 구체적으로 작성하십시오. WPF 및 XAML 태그를 추가했습니다. – nvoigt

답변

0

당신이 인 코드 뒤에 일을 주장하는 경우 하지 WPF가 프로그래밍 할 예정이다 방법, 당신은이 작업을 수행해야합니다

private void MouseOver(object sender, MouseEventArgs e) 
{ 
    var image = sender as Image; 
    if(image != null) 
    { 
     image.Effect = yourShadowEffect; 
    } 
} 

그러나, 방법의 좋은 예가 WPF 방식을 사용하려면 here을 사용하십시오. 코드 숨김 방식이 아무 것도 없습니다.

은 편집 :이 예에서

yourShadowEffect는 귀하의 경우 DropShadowEffect에 입력 System.Windows.Media.Effects.Effect의 변수가 될 예정이다. 당신은 생성자를 호출하여 새 프로젝트를 만들 수 있습니다 :

yourShadowEffect = new DropShadowEffect(); 
당신은 당신의 MouseEventHandler에서이 작업을 수행 할 것이 아니라 자원을 절약하고 새로운 매번 생성하지 않는, 클래스 변수로이하지 말았어야

사용자가 마우스를 올렸을 그것은 이미지 위에 마우스입니다.

+0

나는 동적 인 그림자 효과를 만들기를 기대하고 있으며 12 개의 이미지를 가지고 있으므로 코드 양을 줄이고 싶다. 다음과 같은 오류가 발생합니다 ** 'System.Windows.Media.Effects.DropShadowEffect'는 '유형'이지만 ** 'image.Effect = yourShadowEffect;'에서 '변수'**처럼 사용됩니다 ** 선. 코드를 조금 설명해 주시겠습니까? 대답 해 주셔서 대단히 감사합니다. – soundstage

+0

XAML에서는이 작업을 실제로 수행해야합니다. XAML 코드를 반복한다면 스타일과 컨트롤 템플릿을 살펴보십시오. 예제를 약간 확장 할 것이지만 XAML을이 방법으로 살펴 보는 것이 좋습니다. 뒤에 코드를 사용하지 마십시오. – nvoigt

+0

다시 한 번 감사드립니다. StackOverFlow 예외가 계속 발생하면서 XAML의 모든 dropshadoweffects를 코딩하는 결과가 발생했습니다. – soundstage