2011-08-26 2 views
0

TriggerBase 클래스를 만들었습니다. 이름은 CollectionContainsValueTrigger입니다. 이름에서 알 수 있듯이 트리거는 특정 값을 포함 할 때마다 액션을 호출합니다. 그것이 TObservableCollection, ObservableCollection의 단지 명시 적으로 입력 된 모든 종류의를 수용하는 방식으로 동작하기 때문에상호 작용 트리거 및 일반 속성?

그러나, 나는 트리거를 작성하고 싶습니다. 내가 ObservableCollection 개체를 시도했지만 형식이 내 ViewModel의 명시 적으로 입력 된 ObservableCollection과 다르기 때문에 바인딩이 작동하지 않습니다.

어떻게하면됩니까?

XAML 예 :

<i:Interaction.Triggers> 
    <mi:CollectionContainsValueTrigger Collection="{Binding SomeStronglyTypedViewModelCollection}" Value="Some Value"> 
     <SomeAction /> 
    </mi:CollectionContainsValueTrigger> 
    </i:Interaction.Triggers> 
+0

- ObservableCollection 의 인스턴스와 어떤 관계가 있습니까? - 매개 변수로 인스턴스를 전달했거나이를 유지하려고합니다 (예 : 속성). – alexm

답변

0

:

는 내가 아닌 제네릭 클래스는 내가 다형성 어댑터를 사용하는 것이이 문제를 수용하기 위해 여러 종류의

을의 (ObservableCollection에 같은) 몇 가지 일반적인 기반 클래스 다형성 액세스해야 제대로 이해하고 나는 xaml이 현재 Generics를 지원하지 않는다는 사실을 깨달았다. 그렇다면 내 문제를 해결했을 것입니다 ...

0

당신이 acheive하려고하는 것의 몇 가지 예를 보지 않고 제안하기 어렵다.

class ObservableCollectionAdapterBase 
{ 
    virtual void Method1(){} 
    virtual void Method2(){} 
} 

class ObservableCollectionAdapter<T, TCollectionType> : ObservableCollectionAdapterBase 
where TCollectionType : IObservableCollection<T> 
{ 
    public ObservableCollectionAdapter(TCollectionType collection) 
    { 
     _collection = collection; 
    } 

    override void Method1(){ _collection.DoSomething(); } 
    override void Method2(){ _collection.DoSomething(); } 
}