我遇到了一个奇怪的问题...
看起来使用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时,第二列和第三列(分别用于容纳GridSplitter和辅助项控件)将被赋为0宽度。只要我不触摸拆分器(当辅助控件中的所有选项卡都关闭时,只有第一列保持可见),这个方法就很好用。如果我移动拆分器,从而有效地改变了列0和2之间的比例,则会出现问题。在这种情况下,当右侧控件中的所有项关闭时,这些列的宽度不会重置。
我怀疑这与GridSplitter在XAML中“覆盖”我的定义有关。请问有谁能够证实或反驳这个理论,并提出如何解决这个问题的建议?