WPF如何设置Grid的宽度

界面层View

<Grid Grid.Row="0" x:Name="GridColor">

<Grid.RowDefinitions>

<RowDefinition Height="4*"/>

<RowDefinition Height="6*"/>

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="{Binding DensityColumnWidth}"/>

<ColumnDefinition Width="{Binding MaxInkColumnWidth}"/>

</Grid.ColumnDefinitions>

</Grid>

代码层ViewModel

private GridLength _densityColumnWidth = new GridLength(0); // 使用绝对宽度 0

private GridLength _maxInkColumnWidth = new GridLength(1, GridUnitType.Star);

private bool _isHalfWidth = false;

public GridLength DensityColumnWidth

{

get { return _densityColumnWidth; }

set

{

if (_densityColumnWidth != value)

{

_densityColumnWidth = value;

CallBack(nameof(DensityColumnWidth));

}

}

}

public GridLength MaxInkColumnWidth

{

get { return _maxInkColumnWidth; }

set

{

if (_maxInkColumnWidth != value)

{

_maxInkColumnWidth = value;

CallBack(nameof(MaxInkColumnWidth));

}

}

}

public DelegateCommand Command_ShowColorMode { get; private set; }

private void Command_ShowColorModeExecuted(object obj)//用于设置

{

_isHalfWidth = !_isHalfWidth;

if (_isHalfWidth)

{

// 展开:两列各占一半

DensityColumnWidth = new GridLength(1, GridUnitType.Star);

MaxInkColumnWidth = new GridLength(1, GridUnitType.Star);

}

else

{

// 收起:第一列完全隐藏,第二列占满

DensityColumnWidth = new GridLength(0); // 绝对宽度 0

MaxInkColumnWidth = new GridLength(1, GridUnitType.Star);

}

}