BlinkingLightという名前のカスタムクラスがあります。静的なObservableCollectionBlinkingLightCollectionもあります。UIには、BlinkingLightCollectionにバインドされたListBoxがあります。
私のリストボックスでは、基本的に各BlinkingLightオブジェクトをカスタムコントロールとして表示したいと思います。このコントロールは、LEDライトが付いたボックスのように見え、LEDが1秒間点滅した後、通常に戻るアニメーションがあります。
私のBlinkingLightクラスには、「Flash」と呼ばれるイベントを発生させるサードパーティの「LED」オブジェクトがあります。
これを機能させるためのアイデアや解決策を探しています!
私の失敗した試み:
BlinkingLightがカスタムコントロールのDataContextである場合に、BlinkingLightクラスのデータにバインドできるカスタムコントロール(BlinkingLightControl)を作成しました。
ListBox用のDataTemplateを作成しました。
<Window.Resources>
<DataTemplate x:Key="blinkingLightItemTemplate" >
<local:BlinkingLightControl />
</DataTemplate>
</Window.Resources>
<ListBox ItemsSource={Binding Source={x:Static local:Data.BlinkingLightCollection}}
ItemTemplate="{StaticResource blinkingLightItemTemplate}" />
注:カスタムコントロールのxamlをデータテンプレートに配置するだけで、完全に異なるコントロールを使用できるようになります。
ここで、RoutedEventがLED.FlashイベントであるEventTriggerをBlinkingLightControl(またはDataTemplate)に入れたいと思います。残念ながら、私はこの部分を理解できないようです。BlinkingLightクラスでRoutedEventを作成し、LED.Flashイベントを処理するたびにそれを発生させようとしました。ただし、私のクラスはUIElementまたはContentElementではなく、MSDNによると:MSND Link
「ルーティングされたイベントの所有者は任意のクラスにすることができますが、ルーティングされたイベントを使用するには、UIElementまたはContentElementの派生クラスによって発生および処理される必要があります。カスタムイベントの詳細については、「方法:カスタムのルーティングされたイベントを作成する」を参照してください。
どんな助けでも大歓迎です!! ありがとう、スコット