2011-03-03 6 views
3

끌어서 놓기를 지원하는 목록 상자에 시각적 인 피드백을 다시 추가하려고했습니다. EventSetter에 setter를 추가하고 완료 할 수 있어야합니다. 그러나 eventsetters는 setter를 지원하지 않습니다. 이 동작을 구현하려면 스토리 보드를 만들어야합니까?왜 이벤트 트리거 안에 Setter를 넣을 수 없습니까?

Microsoft의 합리적인 이유는 무엇입니까?

<Style TargetType="{x:Type ListBox}"> 
     <Style.Triggers> 
      <EventTrigger RoutedEvent="DragEnter"> 
       <!--WHy Can't i Add seters here? e.g. 
       <Setter Property="ForeColor" Value="Red"> 
       --> 
      </EventTrigger> 
     </Style.Triggers> 
    </Style> 

답변

7

검사, 또한 때 상태 변화 다시 이전 값으로 특성을 복원한다. 이벤트 트리거를 사용하면 "변경 사항이 다시 적용되지 않습니다."따라서 setter를 사용하면 결코 팝업되지 않는 스택에 뭔가를 푸시하는 것과 같습니다.

상황에 따라 더 나은 질문은 "왜 IsDragOver 속성이 없습니까?"라고 생각합니다.

1

eventtriggers에는 setter를 사용할 수 없습니다. 그게 어떻게 된거 야. 당신이 일하는 뒤에 어떤 코드를 쓰는 것을 좋아하지 않는다면 스토리 보드가 필요 없다. 같은 문제를 가진 많은 사람들이 그렇게 나쁘지는 않습니다.

세터는 단지 상태 변경에 응답하여 등록 정보를 설정하지 않는 아웃 How to open a WPF Popup when another control is clicked, using XAML markup only?

1

네. 같은 문제가 여기 EventTrigger with Setter in WPF? 그들은 스토리 보드를 사용하여 끝났다. 그것은 세터보다 그리 나쁘지 않습니다.

3

어쩌면 이런 식으로 시도 할 수 있습니까? 이것은 일종의 의사 코드이며, 테스트를 위해 여기에 VS가 없지만 작동 할 것입니다. 리플렉터를 사용하면 SetterAction을 리버스 엔지니어링 할 수 있어야하고이 세터를 이론과 거의 똑같이 작동시킬 수 있어야합니다.


public class SetterAction : TargetedTriggerAction<FrameworkElement> 
{  
    public DependencyProperty Property { get; set; } 
    public Object Value { get; set; } 


    protected override void Invoke(object parameter) 
    {     
     AssociatedObject.SetValue(Property, Value);  
    } 
} 
+0

안녕 Lugoues

<TextBox Text="ListBox" > <i:Interaction.Triggers> <i:EventTrigger EventName="DragEnter" > <behavior:SetterAction Property="ListBox.ForeColor" Value="Red"/> </i:EventTrigger> </i:Interaction.Triggers> </TextBox> 
. 솔루션에 대해 더 자세히 설명해 주시겠습니까? TargetedTriggerAction은 닷넷 클래스입니까? 이 페이지는 https://msdn.microsoft.com/en-us/library/ff726545(v=expression.40).aspx에 있지만 어셈블리에서 System.Windows.Interactivity를 찾을 수 없습니다. – Mamad

+0

@Mamad 시스템을 찾을 수 있습니다. 블렌드 SDK의 Windows.Interactivity 어셈블리. http://www.nuget.org/packages/Expression.Blend.Sdk/ – Lugoues

+0

Storyboard 및 비헤이비어 사용에 대한 좋은 대안. 여기서 간단한 코드만으로도 스토리 보드 XAML의 가치가 있다고 생각합니다. – VeV

관련 문제