He creado una aplicación de prueba muy simple para tratar de resolver este problema que me describió un compañero de trabajo. Pudo activarlo en C#, pero creo que necesitaba que la solución fuera más genérica y quería que se hiciera estrictamente en el XAML. El problema era: ¿cómo se activa el Storyboard dentro de un UserControl para que comience en respuesta a un evento en un control en la ventana que lo contiene (el padre no tiene que ser una ventana, puede ser una página u otro UserControl ... . Uso una ventana para simplificar). Entonces, mi mejor ejemplo es que tiene una Ventana con un Botón y una instancia de su UserControl. Desea que el evento Click del botón active un Storyboard dentro del UserControl para comenzar.Controlar el guion gráfico de UserControl desde la ventana principal en WPF usando solo XAML
Dentro del mismo UserControl, Storyboard se declara como un recurso con la clave de MyStoryboard. Creé un botón con un EventTrigger para mostrar que podía activar el guión gráfico haciendo referencia a él con una expresión de enlace. Aquí está el XAML completa para mi UserControl:
<UserControl x:Class="UserControlStoryboard.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<UserControl.Resources>
<Storyboard x:Key="MyStoryboard">
<ColorAnimation Storyboard.TargetName="grid" Storyboard.TargetProperty="(Grid.Background).Color" From="CadetBlue" To="White" Duration="0:0:2" />
</Storyboard>
</UserControl.Resources>
<Grid Background="CadetBlue" x:Name="grid">
<Button Content="Press Me" Height="50">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<BeginStoryboard.Storyboard>
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type UserControl}}" Path="Resources[MyStoryboard]" />
</BeginStoryboard.Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</Grid>
Tenía la esperanza de que, puesto que yo era capaz de contar una Storyboard para comenzar refiriéndose a ella con una expresión de enlace que debería ser capaz de hacer la exacta Lo mismo desde una ventana que contiene este UserControl como un elemento secundario. Pero parece que no puedo encontrar una referencia al Storyboard dentro de la Ventana principal. ¿Es esto imposible de lograr solo en XAML?
La ventana principal en mi proyecto de prueba no tiene más que un botón y una instancia de este UserControl. Si es posible, ¿qué elemento me permitiría agregar un EventTrigger donde el origen del evento es el botón y la acción de disparo le dice al Storyboard del UserControl que comience?
Gracias.
Tengo una situación muy similar, lo hizo ¿alguna vez encuentras una resolución para esto? – Nate
Lamentablemente, no. Esta pregunta fue hecha hace dos años. Desde entonces, he hecho cosas realmente extravagantes con enlaces de plantilla para comunicarme entre los controles padre e hijo. Ahora que tengo esta experiencia detrás de mí, en realidad estoy a favor del enfoque más directo de C#. Los trucos más sofisticados que veo hechos con xaml, bindings, viewmodels, etc. cuanto más me avergüenzo ... puedo hacer una gran pesadilla de depuración. – Rich