问题描述
说明
<ToggleButton Grid.Column="2" IsChecked="{Binding IsNeeded}" Tag="IsOn" Style="{StaticResource ToggleSwitch}" />
这个切换按钮是一个列表框的一部分,它有很多条目。如果开关值将更改,请参阅拨动开关也更改。但变化只是在当前视图中。如果我在 ListBox 内向下滚动,则会显示旧值:
我发现这是 EventTrigger 的问题,但我无法解决该问题。如果我在下面的当前 Input.xaml 中使用普通触发器,则一切正常。但是如果我删除 Trigger 并用 EventTrigger 替换它们,如果元素在视图中,则事件将被抛出。
输入.xaml
<!--Switch -->
<Style x:Key="ToggleSwitch" targettype="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate targettype="{x:Type ToggleButton}">
<ViewBox>
<Border x:Name="Border" CornerRadius="10"
Background="#FFFFFFFF"
Width="40" Height="20">
<Border.Effect>
<DropShadowEffect ShadowDepth="0.5" Direction="0" Opacity="0.3" />
</Border.Effect>
<Ellipse x:Name="Ellipse" Fill="#FFFFFFFF" Stretch="Uniform"
Margin="2 1 2 1"
stroke="Gray" strokeThickness="0.2"
HorizontalAlignment="Stretch">
<Ellipse.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="1" Opacity="0.3" Direction="260" />
</Ellipse.Effect>
</Ellipse>
</Border>
</ViewBox>
<ControlTemplate.Triggers>
<Trigger Property="Tag" Value="IsOn">
<Setter TargetName="Ellipse" Property="Margin" Value="20 1 2 1" />
<Setter TargetName="Border" Property="Border.Background" Value="#0098db" />
<Setter TargetName="Border" Property="SolidColorBrush.Color" Value="#0098db" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Ellipse" Property="Margin" Value="20 1 2 1" />
<Setter TargetName="Border" Property="Border.Background" Value="#0098db" />
<Setter TargetName="Border" Property="SolidColorBrush.Color" Value="#0098db" />
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="Ellipse" Property="Margin" Value="2 1 2 1" />
<Setter TargetName="Border" Property="Border.Background" Value="White" />
<Setter TargetName="Border" Property="SolidColorBrush.Color" Value="White" />
</Trigger>
<!--<EventTrigger RoutedEvent="Checked">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
To="#0098db"
Duration="0:0:0.1" />
<ThicknessAnimation Storyboard.TargetName="Ellipse"
Storyboard.TargetProperty="Margin"
To="20 1 2 1"
Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="Unchecked">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
To="White"
Duration="0:0:0.1" />
<ThicknessAnimation Storyboard.TargetName="Ellipse"
Storyboard.TargetProperty="Margin"
To="2 1 2 1"
Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>-->
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)