交互性触发器和通用属性?

时间:2011-08-26 07:39:55

标签: c# generics xaml mvvm

我创建了一个TriggerBase类,名称为CollectionContainsValueTrigger。顾名思义,只要包含某个值,触发器就会调用该动作。

但是,我想创建触发器,以便它以接受ObservableCollection T的各种ObservableCollection的方式行事,而不仅仅是ObservableCollection的显式类型。我尝试了ViewModel对象,但绑定不起作用,因为Type与ObservableCollection明确键入的 <i:Interaction.Triggers> <mi:CollectionContainsValueTrigger Collection="{Binding SomeStronglyTypedViewModelCollection}" Value="Some Value"> <SomeAction /> </mi:CollectionContainsValueTrigger> </i:Interaction.Triggers> 不同。

我该怎么做?

xaml示例:

{{1}}

2 个答案:

答案 0 :(得分:0)

如果没有看到你想要实现的一些例子,很难建议。

如果我理解正确,你的非泛型类需要对不同类型的一些基于泛型的类(如ObservableCollection)进行多态访问

为了适应这种情况,我会使用多态适配器:

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(); }
}

答案 1 :(得分:0)

好吧,我意识到xaml目前不支持Generics,仅限于未来的版本。如果确实如此,那就解决了我的问题......