Если вы пытаетесь динамически создавать свои классы, я рекомендую вам лучше взглянуть на шаблон проектирования фабричных методов, иначе вы потеряете представление о том, кто что строит и как.
Для этого вы можете закодировать класс, который получает строку и возвращает класс в зависимости от входной строки.
Взгляните на книгу Эриха Гамма «Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения»; Ричард Хелм; Ральф Джонсон; Джон Влиссидес.
Это потому, что вы можете устанавливать триггеры событий только непосредственно в свойстве Trigger.
Используйте стиль для достижения желаемого:
<Style x:Key="Triggers" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="off">
<Setter Property="TextBlock.Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
Следующие объекты имеют коллекции триггеров, которые могут содержать перечисленные типы триггеров :
FrameworkElement Style, ControlTemplate, DataTemplate
---------------- ------------------------------------
EventTrigger EventTrigger
Trigger or MultiTrigger
DataTrigger or MultiDataTrigger
Вы можете сделать это в стиле:
<TextBlock Text="{Binding Status}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="off">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>