2014-12-29 2 views
0

Windows Phone 8.1 RT 앱이 있습니다.Windows Phone 8.1에서 눌렀을 때 모양이 바뀌다

내 페이지에 이미지 버튼이 있습니다.

내가 원하는 것은 내가이 버튼을 누르면 테두리를 노란색으로 설정하거나 이미지를 변경한다는 것입니다.

내 마음 속에서 keydown 및 keup 이벤트를 잡아두기 만하면됩니다. 를 keyDown 이벤트에

는 나는 내가 다시 기본 상태로 되돌리려의 keyup에서

을 '영향'으로 설정합니다.

유일한 문제는 이러한 테스트를 실행할 때/테스트 할 때 이러한 이벤트가 발생하지 않는다는 것입니다.

// 내 페이지의 초기화 이벤트 설정 :

 btn0.KeyDown += btn0_KeyDown; 
     btn0.KeyUp += btn0_KeyUp; 

// 설정이이 이벤트에 대한 내 코드

 <Button Name="btn0" Width="75" Height="75"> 
      <Button.Background > 
       <ImageBrush ImageSource="ms-appx:///Images/0.png" Stretch="Uniform"/> 
      </Button.Background> 
     </Button> 

입니다 :

내 마크 업입니다 내 페이지 초기화 이벤트 :

void btn0_KeyUp(object sender, KeyRoutedEventArgs e) 
    { 
     lblTitle.Text = "btn0_KeyUp"; //never hit 
    } 

    void btn0_KeyDown(object sender, KeyRoutedEventArgs e) 
    { 
     lblTitle.Text = "btn0_KeyDown"; //never hit 
    } 

무엇을해야합니까?

감사합니다.

답변

2

KeyDown 및 KeyUp은 키보드 이벤트입니다. 사용자가 키보드 포커스를 버튼 및 유형에 설정하면 충돌이 발생합니다. 이것은 아마도 당신이 원하는 것이 아닙니다.

푸시 버튼의 모양을 변경하려면 버튼의 스타일을 편집하고 시각적 상태를 수정해야합니다. 단추를 선택하고 마우스 오른쪽 단추로 클릭 한 다음 템플리트 편집 ...을 선택하여 기본 템플리트의 사본을 작성한 다음 기본 템플리트로 이동하고 섹션을 편집하여 원하는대로 변경하십시오. 체크 박스에 시각적 상태 (의의 연습을 위해

<VisualState x:Name="Pressed"> 
    <Storyboard> 
     <PointerDownThemeAnimation Storyboard.TargetName="Grid"/> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter"> 
      <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPressedForegroundThemeBrush}"/> 
     </ObjectAnimationUsingKeyFrames> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border"> 
      <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPressedBackgroundThemeBrush}"/> 
     </ObjectAnimationUsingKeyFrames> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush)" Storyboard.TargetName="Border"> 
      <DiscreteObjectKeyFrame KeyTime="0"> 
       <DiscreteObjectKeyFrame.Value> 
        <SolidColorBrush Color="Yellow"/> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 
     </ObjectAnimationUsingKeyFrames> 
    </Storyboard> 
</VisualState> 

참조 MSDN의 Specifying the visual behavior of a control하지만 개념은 다음과 같습니다

는 다음에 변화에게 상태를 처리하는 기본에 노란색 테두리를 변경 눌림 추가하려면 같은)

가장 쉬운 방법은 시각적 상태 레코더로 블렌드의 시각적 상태를 편집하는 것입니다. 템플릿을 편집하고 상태 탭을 선택한 다음 해당 상태에 적용 할 속성을 설정합니다.

+0

매우 유익하고 내게 많은 것을주었습니다 :). WP8.1을 처음 사용하지만 빠르게 속도를 높이고 싶습니다. 블렌드를 사용한 적이 한번도 없었습니다. 메뉴 시스템에 설치 한 것을 보았습니다. IDE를 통해 액세스하는 좋은 방법이 있습니까? 감사합니다. –

+1

Blend는 Visual Studio와는 별개의 응용 프로그램입니다. 솔루션 탐색기에서 프로젝트 또는 파일을 선택하고 "Open in Blend ..."를 선택하여 IDE에서 실행할 수 있습니다. –

+0

v 많은 감사를드립니다. –

관련 문제