0

XAML でフレームワーク要素 (この場合は境界線) の幅を設定すると、実行時にこの値を変更できなくなりますか?

境界線を含むグリッドがあり、その境界線には他のコントロールが含まれています。グリッドと境界線の幅と高さを 0 から増やして拡張するアニメーションがあります。

次に、サイズ変更の補助として機能するボタンを境界線の上に配置しました (これは境界線のないウィンドウです)。境界線のサイズを変更する必要があるコードのスニペットを次に示します。

private void GridResize_Click(object sender, RoutedEventArgs e)
{

        startPoint = this.PointToScreen(Mouse.GetPosition(this));
        Mouse.Capture(GridResize);
        Resizing = true;

}

private void Window_MouseMove(object sender, MouseEventArgs e)
{
        if (Resizing)
        {
            FrameworkElement border = (FrameworkElement)LibraryBorder;
            //an arbitrary value for testing 
            border.Width += 20;
            LibraryBorder.InvalidateVisual();
        }
}

最初のアニメーションは境界線の幅を 1500 に設定します。デバッグ時に両方のイベントが登録され、Window_MouseMove が境界線の幅を修正しようとしています。ただし、値は変更されません。値は 1500 のままです。要素を FrameworkElement にキャストして、幅プロパティを修正できるようにします。xaml の値が何らかの形でコードをオーバーライドしていると思います。これを回避する方法についてのアイデア。すべてのアニメーションをコードに移動する前に、より良い方法があることを発見する前に (または、コード アプローチは違いを生まないことを確認するために) 質問することにしました。

ご回答ありがとうございます。

4

1 に答える 1

2

デフォルトの FillBehavior HoldEndStoryboardがないことを確認してください。これにより、幅を変更できなくなります。依存関係プロパティ値の優先順位を参照してください。

于 2013-05-19T09:26:51.507 に答える