我创建了一个自定义控件,如下所示:
如果用户点击右边的图标,即复选框(自定义复选框),列表框项目将展开,复选框图标将发生变化,如下所示
下面是 Xaml 代码
<CheckBox x:Name="ExpandCheckBox" IsChecked="{Binding HasExpanded,UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<CheckBox.Resources>
<SolidColorBrush x:Key="CircleStrokeHighlightBrush" Color="#FF3C7FB1"/>
<SolidColorBrush x:Key="CircleFillHighlightBrush" Color="Transparent"/>
<SolidColorBrush x:Key="ArrowStrokeHighlightBrush" Color="#222"/>
<SolidColorBrush x:Key="CircleFillBrush" Color="Transparent"/>
<SolidColorBrush x:Key="StrokeBrush" Color="DarkGray"/>
<SolidColorBrush x:Key="ArrowStrokeBrush" Color="#666"/>
</CheckBox.Resources>
<CheckBox.Template>
<ControlTemplate TargetType="{x:Type CheckBox}">
<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderThickness="1,0,1,0" BorderBrush="{StaticResource PA_DarkGray}">
<Grid x:Name="CheckBoxButtonGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Ellipse x:Name="circle" Fill="{StaticResource CircleFillBrush}" HorizontalAlignment="Center" Height="19" Width="19"
Stroke="{StaticResource StrokeBrush}" VerticalAlignment="Center" />
<Path x:Name="arrow" HorizontalAlignment="Center" SnapsToDevicePixels="false"
Stroke="{StaticResource ArrowStrokeBrush}" StrokeThickness="2" VerticalAlignment="Center"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="true">
<Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/>
</Trigger>
<Trigger Property="IsChecked" Value="false">
<Setter Property="Data" TargetName="arrow" Value="M 1,1.5 L 4.5,5 L 8,1.5"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Stroke" TargetName="circle" Value="{StaticResource CircleStrokeHighlightBrush}"/>
<Setter Property="Fill" TargetName="circle" Value="{StaticResource CircleFillHighlightBrush}"/>
<Setter Property="Stroke" TargetName="arrow" Value="{StaticResource ArrowStrokeHighlightBrush}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</CheckBox.Template>
<CheckBox.FocusVisualStyle>
<Style>
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Border>
<Rectangle Margin="0" SnapsToDevicePixels="true" Stroke="Black" StrokeThickness="1" StrokeDashArray="1 2"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</CheckBox.FocusVisualStyle>
</CheckBox>
这个视图,我在我们的应用程序的弹出窗口中显示。一切正常,但如果我将弹出窗口保持打开 15 到 20 分钟(在 CollpasedView 模式下),CheckBox 不会选中和取消选中,并且为更新复选框箭头数据而编写的触发器不会在 UI 中更新。(在 Snoop IsChecked 属性正在更新,但在 UI CheckBox 模板中没有更新)请帮助找出问题。