0

私はこのような ControlTemplate にグリッドを持っています

 <Grid x:Name="quickMsgGrid" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsQuickMsg, Converter={StaticResource BoolToVisibility}, Mode=TwoWay}">                                    
                                <Border CornerRadius="{Binding ElementName=mainBorder,Path=CornerRadius}" Background="{StaticResource loadingBackgroundBrush}" />
                                <TextBlock x:Name="txtQuickMsg" HorizontalAlignment="Center" VerticalAlignment="Center">asdfasdfasdfasdf</TextBlock>
                            </Grid>

私がしようとしているのは、可視性をカスタム依存関係プロパティ「IsQuickMsg」にバインドすることです

public static readonly DependencyProperty IsQuickMsgProperty = DependencyProperty.Register("IsQuickMsg", typeof(bool), typeof(baseWindow));

    public bool IsQuickMsg
    {
        get { return (bool)GetValue(IsQuickMsgProperty); }
        set { SetValue(IsQuickMsgProperty, value); }
    }

この場合、コード ビハインドで IsQuickMsg を true に設定すると、Grid の Visibility が Visible through converter に設定されます。

public class BoolToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((bool)value ? Visibility.Visible : Visibility.Hidden);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((Visibility)value == Visibility.Visible);
    }
}

グリッドが表示されると、ストーリーボードが開始されていくつかのアニメーションが再生され、終了後にグリッドの可視性が非表示に設定されます

<Trigger Property="IsQuickMsg" Value="True">                            
                        <Trigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames BeginTime="0:0:0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="quickMsgGrid">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Visibility>Visible</Visibility>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                    <DoubleAnimation BeginTime="0:0:0.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="quickMsgGrid" From="0" To="1" Duration="0:0:0.2"/>
                                    <DoubleAnimation BeginTime="0:0:2.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="quickMsgGrid" From="1" To="0" Duration="0:0:0.2"/>
                                    <ObjectAnimationUsingKeyFrames BeginTime="0:0:2.5" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="quickMsgGrid">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Visibility>Hidden</Visibility>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>                                    
                            </BeginStoryboard>
                        </Trigger.EnterActions>

ただし、ストーリーボードが終了すると、グリッドの可視性は非表示に設定されますが、可視性の値がカスタム依存関係プロパティ「IsQuickMsg」に変換されません。

ConvertBack 関数にブレーク ポイントを設定しましたが、呼び出されませんでした。

それで、私はここで何を間違っていますか?

4

0 に答える 0