WPF: comment faire référence à d'autres contrôles dans la propriété de propriété de déclenchement?
j'ai une page WPF. Page a du contenu, mais le dernier composant enfant de la mise en page racine de page est un contrôle d'utilisateur que j'ai créé. Il ressemble à ceci:
<UserControl DataContext=UserControlViewModel>
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="visibilityConverter" />
</UserControl.Resources>
<Grid
Name="grid"
Visibility="{Binding IsOn, Converter={StaticResource visibilityConverter}}">
<!-- Border to dim everything behind my user control -->
<Border Background="#000000" Opacity="0.4" />
<!-- The following border is red and holds the content -->
<Border
Width="{Binding ElementName=txt, Path=ActualWidth}"
Height="{Binding ElementName=txt, Path=ActualHeight}"
Margin="{Binding ElementName=txt, Path=Margin}"
HorizontalAlignment="{Binding ElementName=txt, Path=HorizontalAlignment}"
VerticalAlignment="{Binding ElementName=txt, Path=VerticalAlignment}"
Background="Red">
<TextBlock
Name="txt"
Width="200"
Height="100"
Margin="20"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="This is my super awesome message!" />
</Border>
</Grid>
</UserControl>
Par défaut, le IsOn
propriété de l' UserControlViewModel
l'objet est défini à false
, c'est à dire le contrôle de l'utilisateur n'est pas visible. J'ai implémenté une logique qui change cette propriété en true
et alors le contrôle de l'utilisateur s'affiche devant tous les autres composants qui sont atténués. Cela fonctionne bien.
maintenant, je veux créer une animation d'effet de fondu qui diminuerait les composants qui sont derrière le contrôle de l'utilisateur une fois qu'il devient visible. Ensuite, je veux faire ma bordure rouge qui contient le contenu à fondu dans le côté gauche, donc se déplacer + fondu.
commençons par l'effet de fondu. J'ai écrit ce style à l' Border
qui est censé faire la gradation de fond composants:
<UserControl DataContext=UserControlViewModel>
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="visibilityConverter" />
</UserControl.Resources>
<Grid
Name="grid"
Visibility="{Binding IsOn, Converter={StaticResource visibilityConverter}}">
<!-- Border to dim everything behind my user control -->
<Border Background="#000000" Opacity="0.4">
<!-- The following style is new code -->
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<Trigger Property="{Binding ElementName=grid, Visibility}" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0.0"
To="0.4"
Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
...
mais il y a le problème: Je ne peux pas la liaison sur le déclencheur Property
, car il n'est pas une propriété de dépendance. J'ai besoin d'un moyen de dire à mon déclencheur une fois l' grid
a Visibility
propriété définie à Visible
. S'il vous plaît aider et je vous remercie!
le deuxième problème est, Je ne sais pas comment faire le déplacement de la frontière rouge, donc j'ai besoin d'aide autour de quelques transformations d'échelle aussi bien, je suppose... Merci encore une fois!
1 réponses
essayez de remplacer la ligne suivante:
Origine:
<Trigger Property="{Binding ElementName=grid, Visibility}" Value="Visible">
Remplacement:
<DataTrigger Binding={Binding Visibility, ElementName=grid} Value="Visibile">