我有一个控件,它的依赖属性“IsLightOnVal”是这样定义的:
// List of available states for this control
private ObservableCollection<CtlStateBool> m_IsLightOnVal;
[Category("Properties")]
public System.Collections.ObjectModel.ObservableCollection<CtlStateBool> IsLightOnVal
{
get
{
if (m_IsLightOnVal == null)
m_IsLightOnVal = new System.Collections.ObjectModel.ObservableCollection<CtlStateBool>();
return m_IsLightOnVal;
}
set
{
if (m_IsLightOnVal != value)
{
m_IsLightOnVal = value;
OnPropertyChanged("IsLightOnVal");
}
}
}
// IsLightOnVal dependency property.
public static readonly DependencyProperty IsLightOnValProperty =
DependencyProperty.Register("IsLightOnVal", typeof(System.Collections.ObjectModel.ObservableCollection<CtlStateBool>), typeof(ButtonSimple), new UIPropertyMetadata(new System.Collections.ObjectModel.ObservableCollection<CtlStateBool>()));
在我的集合中,每个元素都包含一个字符串(状态)和一个布尔值(值)
我的控件样式在 ControlTemplate 中定义。
我想添加一个触发器,例如,当我的集合中的第一个元素为真时,然后做一些事情。
我试过这个:
<Style x:Key="Btn_RADIO_VHF" TargetType="{x:Type ButtonSimple}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ButtonSimple}">
<Canvas .../>
<ControlTemplate.Triggers>
<DataTrigger Value="True" Binding="{Binding IsLightOnVal[0].Value, RelativeSource={RelativeSource TemplatedParent}}">
<Setter Property="Fill" TargetName="pShowTouch" Value="{DynamicResource ShowTouch}"/>
</DataTrigger>
</ControlTemplate.Triggers>
我也尝试使用简单的触发器而不是 DataTrigger,但它似乎不支持绑定......
有人能帮我吗?