我ColumnDefinitions
在运行时更改时遇到问题。当我这样做时,列Width
不会立即反映。如果我调整当前窗口/用户控件的大小,那么Width
会反映。
我MVVM
也在关注,我有一个DependencyProperty
允许我根据需要在Grid
.
目前这是我正在使用的,如果我调整窗口大小和/或控制打开,它确实可以工作Grid
......
public static void ColumnSpacerChanged(
DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
if (!(obj is Grid) || ((Grid)obj).ColumnDefinitions.Count == 0 || (int)e.NewValue == (int)e.OldValue)
return;
Grid grid = (Grid)obj;
for (int i = 0; i < grid.ColumnDefinitions.Count; i++)
{
if(grid.ColumnDefinitions[i].Tag != null && grid.ColumnDefinitions[i].Tag.ToString() == COLUMN_SPACER)
{
grid.ColumnDefinitions[i] = new ColumnDefinition() { Width = new GridLength((int)e.NewValue, GridUnitType.Pixel), Tag = COLUMN_SPACER };
}
}
grid.UpdateLayout(); // Tried this, but doesn't work
}
我尝试了以下但没有任何工作。
grid.UpdateLayout();
grid.Refresh; // (off the parent)
ColumnDefinitions
当我在运行时更改它们没有立即反映时,我是否遗漏了什么?