切换控件的不透明度

时间:2015-11-19 14:48:32

标签: c# .net wpf xaml

我有按钮,应切换元素的Opacity。目前它仅适用于一半 - 单击使控件可见(将不透明度设置为1)。我尝试使用ToogleButton代替简单Button来使用属性IsChechecked(我认为它与IsClicked相同)但我发现的并不是TargetName。对我有好处,因为这个属性我不能为动画设置<ToggleButton BorderThickness="0" Background="Transparent" Grid.Column="0" Padding="0" Grid.Row="0" Focusable="False" Width="Auto" PreviewMouseUp="Share_Click"> <ToggleButton.Content> <Grid HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <TextBlock Margin="0,0,6,0" Grid.Column="0" Text="Filter" Foreground="#FFC0B6D1" FontFamily="Segoe UI Semibold" FontSize="14" /> <Image Grid.Column="1" Margin="0,4,0,0" VerticalAlignment="Center" Height="6" Width="12" Name="FiltersToggleArrow" Style="{StaticResource ToogleFilters}"/> </Grid> </ToggleButton.Content> <ToggleButton.Triggers> <EventTrigger RoutedEvent="UIElement.PreviewMouseDown"> <BeginStoryboard> <Storyboard> <DoubleAnimation BeginTime="0:0:0.00" Storyboard.TargetName="FiltersPanel" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:00.2" AutoReverse="False"/> </Storyboard> </BeginStoryboard> </EventTrigger> </ToggleButton.Triggers> </ToggleButton>

{{1}}

1 个答案:

答案 0 :(得分:1)

MSDN文档说:

  

您可以将此属性设置为应用setter集合(此setter所属的集合)范围内的任何元素的名称。这通常是包含此setter的模板中的命名元素。

要解决此问题,您可以将Storyboard应用于Style的{​​{1}}内,而不是Panel。在这种情况下,您可以使用ToggleButton 绑定DataTrigger属性并采取相应措施。

以下是我使用IsCheckedToggleButton进行的示例。

Rectangle

根据我对触发器的经验,他们可能是背后的皇家痛苦,并且很难做到正确。话虽这么说,这个例子应该足以满足你的要求。