2013-06-29 5 views
0

У меня общий стиль, разделяемый более чем одним типом элемента управления (TextBox и LongUpDown/DoubleUpDown от Xceed).Тип цели общего типа

Стиль называется (или keyed?), И я не хочу, чтобы он автоматически применялся ко всем элементам управления целевого типа.

Я понятия не имею, что является ближайшим базовым типом для всех этих элементов управления, поэтому я подумал, что могу попытаться установить TargetType на UIElement, но VS, похоже, не узнает его.

Как установить TargetType на UIElement?

Стиль:

<Style TargetType="TextBox" x:Key="TextFieldEntry"> 
    <Setter Property="Background" Value="AliceBlue" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=IsDirty}" Value="True"> 
      <Setter Property="BorderBrush"> 
       <Setter.Value> 
        <SolidColorBrush Color="#FFF9D74B" /> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Path=IsDirty}" Value="False"> 
      <Setter Property="BorderBrush"> 
       <Setter.Value> 
        <SolidColorBrush Color="#FF98F329" /> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

управления:

Style="{StaticResource ResourceKey=TextFieldEntry}" 
+0

Вы можете попробовать 'TargetType =«Контроль»' – nemesv

+0

Спасибо, это работает. –

ответ

1

Вы можете установить TargetType в UIElement, но это не будет работать, потому что BorderBrush и Background имущество, которое используется в вашем стиле и определенную на System.Windows.Controls.Control class., а не на UIElement.

Так что вам просто нужно установить TargetType в Control, чтобы заставить его работать:

<Style TargetType="Control" x:Key="TextFieldEntry"> 
    <Setter Property="Background" Value="AliceBlue" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=IsDirty}" Value="True"> 
      <Setter Property="BorderBrush"> 
       <Setter.Value> 
        <SolidColorBrush Color="#FFF9D74B" /> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Path=IsDirty}" Value="False"> 
      <Setter Property="BorderBrush"> 
       <Setter.Value> 
        <SolidColorBrush Color="#FF98F329" /> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
Смежные вопросы