2011-01-09 15 views
5

Dependiendo de la propiedad IsEnabled de mi UserControl (verdadero/falso), deseo que los controles queden dentro tengan diferentes colores. Quiero hacerlo con la 'magia' de XAML.Activador de la propiedad UserControl para el control secundario

<UserControl.Resources> 
    <Style x:Key="EnableDependent" TargetType="{x:Type Shape}"> 
     <Style.Triggers> 
      <Trigger Property="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True"> 
       <Setter Property="Stroke" Value="White" /> 
      </Trigger> 
      <Trigger Property="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="False"> 
       <Setter Property="Stroke" Value="Black" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</UserControl.Resources> 

El estilo se aplica en un ViewBox donde se dibuja un camino:

<Viewbox Grid.Column="3" Width="18" Margin="5,5,2,5" MouseEnter="Dispatch_MouseEnter" DockPanel.Dock="Right" Stretch="Uniform"> 
     <Path Data="M0,1 L4,1 M2,0 L4,1 L2,2" Stretch="Fill" StrokeThickness="3" Width="12" Height="12" Style="{StaticResource EnableDependent}" /> 
    </Viewbox> 

me sale una excepción de tiempo de ejecución que una unión no se puede establecer en la propiedad 'propiedad' de un gatillo.

Entonces, ¿cuál es la manera de hacer esto?

Respuesta

17

Utilice un DataTrigger en lugar de un Trigger normal que es para los cambios de propiedad internos, tiene un Binding-propiedad donde puede hacer eso.

<Style x:Key="EnableDependent" TargetType="{x:Type Shape}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True"> 
      <Setter Property="Stroke" Value="White" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Path=IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="False"> 
      <Setter Property="Stroke" Value="Black" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
+2

Me pregunto por qué esto fue downvoted .... –

Cuestiones relacionadas