2010-05-02 4 views
1

ListBoxItem으로 사용하려는 usercontrol이 있습니다.ListBoxItem 및 IsSelected로 UserControl

<ListBox.ItemTemplate> 
    <DataTemplate> 
      <local:MyUserControl/> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

사용자 정의 컨트롤을 선택 취소하면 스토리 보드를 재생하고 싶습니다.

<UserControl.Resources> 
    <Style TargetType="{x:Type UserControl}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}, Mode=FindAncestor}}" Value="False"> 
        <DataTrigger.EnterActions> 
         <BeginStoryboard Storyboard="{StaticResource OnMouseLeaveSB}"/> 
        </DataTrigger.EnterActions> 
       </DataTrigger> 
      </Style.Triggers> 
    </Style> 
</UserControl.Resources> 

하지만 스토리 보드는 절대로 발사되지 않습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 추가 할

편집 :

정말 달성하기 위해 노력하고 무엇

이이 :

마우스가 UserControl을 초과 할 때, 나는 스토리 보드 (OnMouseEnterSB)을 재생합니다. 마우스가 UserControl을 떠날 때 다른 스토리 보드 (OnMouseLeaveSB)를 재생하고 싶습니다. 나는이 모든 것이 잘 작동한다.

그러나 UserControl을 선택하고 마우스를 놓으면 스토리 보드를 재생하고 싶지 않습니다.

마지막으로 UserControl을 선택 취소하면 OnMouseLeaveSB 스토리 보드를 재생하고 싶습니다.

+0

'UserControl'에서'IsSelected' 속성을 어떻게 얻었습니까? http://stackoverflow.com/questions/20530010/how-to-add-isselected-property-to-a-usercontrol?noredirect에서 도와 주시겠습니까? = 1 # comment30696294_20530010 –

답변

1

나는 Silverlgiht 소녀이고 Silverlight에서는 "VisualStateManager"라고 불리는 것을 (WPF에서도 사용할 수 있습니다.) WPF 경험이 없습니다.

VSM을 사용하면 (사용자) 컨트롤 (mouseover, mouseleft, normal)의 각 "상태"에 대해 다른 시각적 모양을 정의 할 수 있으며 이전 상태 및/또는 다음 상태에 따라 해당 상태간에 다른 전환을 정의 할 수 있습니다 또는 다른 모든 주 사이를 이동할 때 기본 전환을 사용할 수 있습니다.

블로그 : Tim Heuer의 블로그 게시물 this을 읽으십시오. 많은 스크린 샷과 함께 잘 설명합니다 :). 또한 link을 확인하시기 바랍니다.

VSM을 사용하면 상태 및 애니메이션이 이벤트 핸들러 및 animation.Begin() 호출이 많은 응용 프로그램이 아닌 컨트롤의 일부입니다. 정말 좋아하고 추천 :

+0

감사합니다. VSM은 내가 필요한 것입니다. 나는 몇 번이나 우연히 만났지만, 실제로 그것이 무엇인지주의를 기울이지 않았다. – mfanto

1

를 내가 제대로 질문을 이해한다면, 당신은 어떤 ListViewItem이이 선택을 잃을 때이 애니메이션 'OnMouseLeaveSB'을 연주 할을. 그러나 트리거에서 선택되지 않은 모든 항목에 대해 애니메이션을 재생하고 있습니다. 따라서이 방법이 효과가 있더라도 원하는대로되지는 않습니다.

왜 스토리 보드가 실행되지 않는 이유은 기본 BlueHighlight가 애니메이션을 숨기는 이유입니다. 이 없애 해킹 당신이에 isSelected 값 Trigger.ExitActions에서 스토리 보드를 삽입해야합니다, 당신은을 원하는 것을 달성하기 위해 여기

www.HereIsYourLink.com을 설명 테두리 색상을 설정하는 것 '진정한' .

서두르지 않으면 VSM을 살펴보십시오.

+0

답변 해 주셔서 감사합니다. 언급하는 것을 잊어 버렸습니다. 저는 국경 색깔과 모든 것을 실제로 돌 보았습니다. 문제는 사건의 순서가 더 많았고 어느 시점에 어느 쪽을 연주했는지를 통제하는 것이었다. VSM은 내가 필요한 바로 그 것이다. – mfanto