سؤال

ولدي إشارة إلى مثيل كائن القصة المصورة، وترغب في الحصول على عقد من عنصر الإطار الذي يتم إرفاقه / موحية. لم أكن قادرة على الخروج مع أي طريقة للقيام بذلك.

وعلى سبيل المثال، في XAML أدناه، يمكن أن أذهب من إشارة إلى لوحة العمل للحصول على عقد من أي تسمية أو الشبكة

<Grid>
    <Grid.Resources>
        <Storyboard x:Key="myStoryboard">
            <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:5"/>
        </Storyboard>
        <Style x:Key="myStyle" TargetType="{x:Type Label}">
            <Style.Triggers>
                <DataTrigger 
                 Binding="{Binding Path=StartAnimation}" Value="true">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard Storyboard="{StaticResource myStoryboard}" />                            
                    </DataTrigger.EnterActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>
    <Label x:Name="labelHello" Grid.Row="0" Style="{StaticResource myStyle}">Hello</Label>
</Grid>

لأولئك الذين يتساءلون لماذا على وجه الأرض يجب أن أفعل ذلك، لأنني أسعى لإنشاء فئة القصة المصورة المشتقة أو سلوك المرفقة من شأنها أن تسمح لي لتحديد اسم الأسلوب على DataContext ليتم استدعاؤها عند الانتهاء من القصة المصورة وقع الحدث. وهذا سوف يسمح لي بذلك MVVM النقي بدلا من الحاجة بعض التعليمات البرمجية وراء الدعوة الى بلدي مشاهدة النموذجي.

هل كانت مفيدة؟

المحلول

إذا قمت بتغيير XAML الخاص بك إلى شيء من هذا القبيل:

<Grid x:Name="grid">
    <Grid.Resources>
        <Storyboard x:Key="myStoryboard">
            <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:5" Storyboard.Target="{Binding ElementName = grid}"/>
        </Storyboard>
        <Style x:Key="myStyle" TargetType="{x:Type Label}">
            <Style.Triggers>
                <DataTrigger 
                 Binding="{Binding Path=StartAnimation}" Value="true">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard Storyboard="{StaticResource myStoryboard}" />                            
                    </DataTrigger.EnterActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>
    <Label x:Name="labelHello" Grid.Row="0" Style="{StaticResource myStyle}">Hello</Label>
</Grid>

وهذا يدخل في العاشر: اسم للشبكة وStoryboard.Target إلى DoubleAnimation. يمكنك الآن الحصول على مرجع إلى الشبكة مع هذا الرمز:

Storyboard sb = //You mentioned you had a reference to this.
var timeLine = sb.Children.First();
var myGrid = Storyboard.GetTarget(timeLine);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top