with trigger conditions wpf user-controls triggers wpf-controls dependency-properties

conditions - trigger with condition wpf



¿Creciendo UserControl Size con Style Trigger? (1)

Me gustaría hacer que un UserControl personalizado crezca por un multiplicador cuando un DP "IsSelected" se establece en verdadero. Mi actual XAML se ve así:

<ctrl:MyBaseControl x:Class="MyDemo.Controls.MyCustomControl" ...> <ctrl:MyBaseControl.Resources> <Style TargetType="{x:Type ctrl:MyCustomControl}"> <Setter Property="BorderBrush" Value="White" /> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="BorderThickness" Value="2" /> <Setter Property="Width" Value="340" /> <Setter Property="Height" Value="260" /> </Trigger> </Style.Triggers> </Style> </ctrl:MyBaseControl.Resources> <Border> <StackPanel> ... </StackPanel> </Border>

En la muestra anterior, "MyBaseControl" extiende UserControl y define el IsSelected DP.

Este código simplemente no está funcionando en este momento, que es uno de mis problemas. La otra es que me gustaría aumentar el ancho / alto para una cierta cantidad (por ejemplo: 0.10) en lugar de establecerlo en un número difícil. De esta forma puedo establecer el tamaño cuando defino el control en la fuente.

¡Gracias por cualquier ayuda!

CÓDIGO DE ADICIÓN:

Código MyBaseControl:

public abstract class MyBaseControl: UserControl { public static readonly DependencyProperty IsSelectedProperty = DependencyProperty.Register( "IsSelected", typeof(Boolean), typeof(MyBaseControl), new PropertyMetadata(null)); public MyBaseControl() : base() { } #region Properties public Boolean IsSelected { get { return (Boolean)GetValue(IsSelectedProperty); } set { SetValue(IsSelectedProperty, value); } } #endregion Properties }

Código de MyCustomControl:

public partial class MyCustomControl: MyBaseControl { public static readonly DependencyProperty IconProperty = DependencyProperty.Register( "Icon", typeof(ImageSource), typeof(MyCustomControl), new PropertyMetadata(null)); public static readonly DependencyProperty BlurbProperty = DependencyProperty.Register( "Blurb", typeof(String), typeof(MyCustomControl), new PropertyMetadata(null)); public MyCustomControl() { InitializeComponent(); } #region Properties public ImageSource Icon { get { return (ImageSource)GetValue(IconProperty); } set { SetValue(IconProperty, value); } } public String Blurb { get { return (String)GetValue(BlurbProperty); } set { SetValue(BlurbProperty, value); } } #endregion Properties }

Ejemplo de activación activa en elementos internos:

<Style TargetType="{x:Type Border}"> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ctrl:MyCustomControl}}, Path=IsSelected}" Value="True"> <Setter Property="BorderThickness" Value="5" /> </DataTrigger> </Style.Triggers> </Style>


Prueba esto

<ctrl:MyBaseControl.Resources> <Style TargetType="{x:Type ctrl:MyCustomControl}"> <Setter Property="BorderBrush" Value="White" /> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="BorderThickness" Value="2" /> <Setter Property="RenderTransform" > <Setter.Value> <ScaleTransform ScaleX="1.1" ScaleY="1.1" /> </Setter.Value> </Setter> <Setter Property="RenderTransformOrigin" Value="0.5, 0.5"/> </Trigger> </Style.Triggers> </Style> </ctrl:MyBaseControl.Resources>