WPF在运行时重新调整边框大小

时间:2013-05-19 08:26:21

标签: c# wpf

在XAML中设置Framework元素(在本例中为Border)宽度是否会阻止我在运行时更改此值?

我有一个包含边框的网格,而该网格又包含一些其他控件。我有一个动画,它扩展了网格和边框的宽度和高度,使值从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,希望这将允许我修改width属性。我假设我的xaml值以某种方式覆盖了我的代码。关于如何解决这个问题的任何想法。在我开始将所有动画转移到代码中之前,我想我会先问一下,发现有一种更好的方式(或者代码方法不会产生影响!!)。

提前感谢您的回答

1 个答案:

答案 0 :(得分:2)

确保您的Storyboard没有默认的FillBehavior HoldEnd。这会阻止您更改宽度。请参阅Dependency Property Value Precedence