依存関係プロパティ「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 で定義されています。
たとえば、コレクションの最初の要素が true の場合にトリガーを追加して、何かを実行したいと考えています。
私はこれを試しました:
<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 の代わりに単純な Trigger も試してみましたが、バインディングをサポートしていないようです...
誰かが私を助けることができますか?