我遇到了一个奇怪的问题......
看起来使用 GridSplitter 调整 Grid 列的大小会禁用(或以其他方式停用)在 Grid 列上定义的触发器。
这是我的设置:
Grid 有 3 列,定义如下:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition>
<ColumnDefinition.Style>
<Style>
<Setter Property="ColumnDefinition.Width" Value="Auto"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=OpenItemViewModels.Count}" Value="0">
<Setter Property="ColumnDefinition.Width" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
<ColumnDefinition>
<ColumnDefinition.Style>
<Style>
<Setter Property="ColumnDefinition.Width" Value="4*"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=OpenItemViewModels.Count}" Value="0">
<Setter Property="ColumnDefinition.Width" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
</Grid.ColumnDefinitions>
期望的是,当第三列中没有构成控件的 ItemsSource 项时,将为第二列和第三列分配 0 宽度(分别承载 GridSplitter 和辅助项控件)。
只要我不触摸拆分器(当辅助控件中的所有选项卡都关闭时,只有第一列仍然可见),它就可以很好地工作。
如果我移动拆分器,问题就开始了,从而有效地改变了 ##0 和 2 列之间的比例。在这种情况下,当右侧控件中的所有项目都关闭时,这些列的宽度不会重置。
我怀疑这与 GridSplitter “否决”我在 XAML 中的定义有关。
有人可以确认/反驳这个理论,并建议如何解决这个问题吗?