我有一个名为 BlinkingLight 的自定义类。我还有一个静态 ObservableCollection BlinkingLightCollection。在 UI 中,我有一个绑定到 BlinkingLightCollection 的 ListBox。
在我的 ListBox 中,我想基本上将每个 BlinkingLight 对象显示为一个自定义控件,该控件看起来像一个带有 LED 灯的框,它有一个动画,使 LED 看起来就像它只是闪烁了一秒钟然后恢复正常。
我的 BlinkingLight 类具有引发名为“Flash”的事件的第三方“LED”对象。
我正在寻找想法或解决方案来让它发挥作用!
我失败的尝试:
我创建了一个自定义控件 (BlinkingLightControl),当 BlinkingLight 是我的自定义控件的 DataContext 时,它可以绑定到我的 BlinkingLight 类的数据。
我为我的 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 放入数据模板中,而不是使用完全不同的控件,如果这样可以使事情变得更容易。
现在我想在我的 BlinkingLightControl(或 DataTemplate)中有一个 EventTrigger,它的 RoutedEvent 是 LED.Flash 事件。不幸的是,我似乎无法弄清楚这部分。我试图在我的 BlinkingLight 类中创建一个 RoutedEvent ,并在我处理 LED.Flash 事件时引发它。但是,我的课程不是 UIElement 或 ContentElement,并且根据 MSDN:MSND Link
“路由事件所有者可以是任何类,但路由事件必须由 UIElement 或 ContentElement 派生类引发和处理才能有用。有关自定义事件的更多信息,请参阅如何:创建自定义路由事件。”
任何帮助将不胜感激!!谢谢,斯科特