ContentPresenter
デフォルトで高さと幅が0に設定されているを含むWPFウィンドウがあります。ユーザーがボタンをクリックすると、アニメーションを実行してContentPresenterのHeightプロパティとWidthプロパティを896,1024に変換します(実際には、成長中に3回転します)。これはすべて問題ありません...
ユーザーコントロールのDataContextはIDataErrorInfoを実装し、ユーザーが[これらの健康と安全に関する指示を読んで理解しました]チェックボックスをクリックしない場合、チェックボックスの周囲に赤い境界線が表示されます...
私の問題は、ユーザーが[キャンセル]をクリックし、高さと幅を0,0に縮小するアニメーションを実行すると、UserControlが必要に応じて縮小されますが、赤い境界線が完全に消えないことです。ウィンドウの中央にある赤いピクセル
私が間違っていることを誰かが考えていますか?「赤い境界線」は、WPFによってレンダリングされた単なるAdornerであると想定しているため、この動作を変更する方法がわかりません...
すべてが大いに感謝します!
更新-阿部の優れた提案を試しましたが、残念ながらうまくいきませんでしたが、他のことも試してみました...そこで、(一時的に)「縮小」アニメーションをコメントアウトし、可視性を「折りたたみ」に設定しました。 KeyTime = "0:0:0.9" ...キャンセルを押すと、1秒も経たないうちに、UserControlは消えますが、赤い装飾者は頑固に残ります:(
追加の情報として(関連するかどうかわからない場合)、ContentPresenterに表示されるUserControlには、UserControlをレンダリングするためのContentPresenterと、検証装飾を含む内部コンテンツも含まれています...
コードサンプル:
<Button
Name="signInButton"
Grid.Row="0" Grid.Column="0"
Margin="30"
HorizontalAlignment="Right" VerticalAlignment="Bottom"
Style="{StaticResource LargeButtonStyle}"
Content="Sign In"
Command="{Binding SignInCommand}">
<Button.Triggers>
<EventTrigger
RoutedEvent="Button.Click">
<BeginStoryboard
Storyboard="{DynamicResource openViewAnimation}" />
</EventTrigger>
</Button.Triggers>
</Button>
<ContentPresenter
Name="mainView"
Grid.RowSpan="2" Grid.ColumnSpan="2"
HorizontalAlignment="Center" VerticalAlignment="Center"
Opacity="0.9"
Content="{Binding CurrentContent}">
<ContentPresenter.RenderTransform>
<RotateTransform
Angle="0" />
</ContentPresenter.RenderTransform>
</ContentPresenter>
<Storyboard x:Key="closeViewAnimation">
<DoubleAnimation
Storyboard.TargetName="mainView" Storyboard.TargetProperty="Height"
From="896" To="0" Duration="0:0:0.9"
AutoReverse="False" RepeatBehavior="1x" />
<DoubleAnimation
Storyboard.TargetName="mainView" Storyboard.TargetProperty="Width"
From="1024" To="0" Duration="0:0:0.9"
AutoReverse="False" RepeatBehavior="1x" />
</Storyboard>
ありがとう、イアン