<Style TargetType="controls:EventTimeView">
<Style.Triggers>
<Trigger Property="PositioningMethod" Value="Column" >
<Setter Property="Background" Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
PositioningMethod是枚举类型的EventTimeView的依赖项属性.
结果是:
System.InvalidOperationException occurred
Message=Property can not be null on Trigger.
Source=PresentationFramework
StackTrace:
at System.Windows.StyleHelper.UpdateTables(PropertyValue& propertyValue, FrugalStructList`1& childRecordFromChildIndex, FrugalStructList`1& triggerSourceRecordFromChildIndex, FrugalStructList`1& resourceDependents, HybridDictionary& dataTriggerRecordFromBinding, HybridDictionary childIndexFromChildName, Boolean& hasInstanceValues)
InnerException:
Run Code Online (Sandbox Code Playgroud)
我不知道可能出错了什么.例外太模糊了:哪个属性?什么是null?
我有以下 xaml:
<Window x:Class="SharedSizeGroupBug.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</Window.Resources>
<StackPanel Grid.IsSharedSizeScope="True">
<ToggleButton IsChecked="False" Name="TB" Content="Toggle" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="DZG" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="A1" Width="100" />
<TextBlock Text="A2" Grid.Column="1" />
</Grid>
<Grid Visibility="{Binding IsChecked, ElementName=TB, Converter={StaticResource BooleanToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="DZG" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="B1" Width="200" />
<TextBlock Text="B2" Grid.Column="1" />
</Grid>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
当您尝试此操作时,初始状态第一列的宽度为100。当按下按钮并且第二个网格可见时,第一列的宽度变为200。但是,当您再次按下该按钮时,该列的宽度仍为200。