WPF: Comment faire référence à d'autres contrôles à l'intérieur de déclenchement de Propriété?

J'ai un WPF page. La Page a un peu de contenu, mais le dernier enfant de la composante de la page racine de la mise en page est un contrôle 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 la UserControlViewModel objet est défini à false, c'est à dire le contrôle de l'utilisateur n'est pas visible. J'ai mis en œuvre une certaine logique que les changements de cette propriété true puis le contrôle de l'utilisateur est affiché en face de tous les autres composants qui sont grisés. Cela fonctionne bien.

Maintenant, je veux créer un effet de fondu d'animation qui aurait dim les composants qui sont derrière le contrôle de l'utilisateur une fois qu'il devient visible. Ensuite, je veux faire de ma bordure rouge qui renferme le contenu d'un fondu à partir de la gauche, donc le déplacement + fondu.

Commençons par l'effet de fondu en premier. J'ai écrit ce style à la 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 définir 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 le grid a obtenu le Visibility propriété définie à Visible. S'il vous plaît aider et je vous remercie!

Deuxième problème est, je ne sais pas comment faire le déplacement de la bordure rouge, j'ai donc besoin de l'aide autour de certains à l'échelle des transformations ainsi, je suppose... Merci encore une fois!

OriginalL'auteur Boris | 2011-04-14