私はこのような 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 関数にブレーク ポイントを設定しましたが、呼び出されませんでした。
それで、私はここで何を間違っていますか?