界面层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);
}
}