只要你的“红绿灯”被包裹在一个控制装置里,它看起来就是,我不认为这是可怕的。每个椭圆都有很好的定义,并且有不同的触发器,每个都指示自己的状态。您已经将常见部分分解成基本样式,这很好。
您可以将单个省略号包装在另一个具有
ActiveState
属性与AN
ActiveFill
属性。然后你的交通灯看起来像:
<StackPanel Orientation="Vertical" DataContext="{StaticResource ViewModel}">
<my:Indicator State="{Binding State}" ActiveState="Red" ActiveFill="Red" />
<my:Indicator State="{Binding State}" ActiveState="Amber" ActiveFill="Red" />
<my:Indicator State="{Binding State}" ActiveState="Green" ActiveFill="Green" />
</StackPanel>
这样可以将所有椭圆样式都包含在指示器控件中,控件唯一需要担心的是比较
State
到
激活物
确定它是否应该用
活性填料
刷子。
至于这是否值得付出努力,这取决于你漂浮在这些物体中的多少,以及你是否在红绿灯用户控制之外使用它们。记住:你不需要它。