【问题标题】:WPF grid size changed event firing only when increasing and not when decreasingWPF 网格大小更改事件仅在增加时触发,而不是在减少时触发
【发布时间】:2017-06-22 22:35:08
【问题描述】:

我有一个带有行定义的网格

RowDefinition rd0 = new RowDefinition();
rd0.Height = new GridLength(1, GridUnitType.Auto);
RowDefinition rd1 = new RowDefinition();
rd1.Height = new GridLength(1, GridUnitType.Star);
RowDefinition rd2 = new RowDefinition();
rd2.Height = new GridLength(1, GridUnitType.Auto);
grdMain.RowDefinitions.Add(rd0);
grdMain.GetGrdPlugins().RowDefinitions.Add(rd1);
grdMain.GetGrdPlugins().RowDefinitions.Add(rd2);

现在我在第一行添加一个文本块

var tbxTitle = new TextBlock(){};
Grid.SetRow(tbxTitle, 0);
grdMain.Children.Add(tbxTitle);

在第三个按钮堆栈面板中

StackPanel spButtons = new StackPanel() { Orientation = Orientation.Horizontal, HorizontalAlignment = HorizontalAlignment.Center, };
grdMain.Children.Add(spButtons);
Grid.SetRow(spButtons, 2);
...

在第二个堆栈面板中。

现在我希望在网格大小发生变化时调用一个事件:

var spMatrix_Volatile = new StackPanel() { HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Stretch, Background = Brushes.RosyBrown};
spMatrix_Volatile.SizeChanged += (sender, args) =>
{
    Console.Beep();
    double dHeight = spMatrix_Volatile.ActualHeight;
    CreateCellMatrix(out strResult, ref spMatrix_Volatile, false, dHeight);
};

Grid.SetRow(spMatrix_Volatile, 1);
grdMain.Children.Add(spMatrix_Volatile);

现在奇怪的是,在网格的高度增加时会调用 size changed 事件,但在减小时从不会。

谢谢

【问题讨论】:

    标签: c# wpf grid stackpanel


    【解决方案1】:

    使用您的代码时,我也会遇到这种情况。 因此,我将堆栈面板放在网格中,并且不再发生这种情况。 也就是说,事件在增加和减少时都会被触发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多