我有一个 ToogleButton,我正在使用 DataTriggers 以这种方式更改其内容:
<Style x:Key="EstiloToggleButton" TargetType="ToggleButton" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="BorderBrush" Value="#FF333333" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}" Value="True">
<Setter Property="BorderBrush" Value="#FFFF8000" />
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="p" FontFamily="Wingdings 3" RenderTransformOrigin="0.5,0.5">
<TextBlock.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="0.5"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</TextBlock.RenderTransform>
</TextBlock>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}" Value="False">
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="q" FontFamily="Wingdings 3" RenderTransformOrigin="0.5,0.5">
<TextBlock.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="0.5"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</TextBlock.RenderTransform>
</TextBlock>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
这是它的外观:
以前我已经为每个按钮定义了这个,一切都很好,但是代码行很多,所以我决定将它压缩成一种样式,然后将相同的样式应用到我所有的 ToggleButtons 上,并具有所需的外观。
到目前为止一切顺利,但现在我有一个问题:只有一个,或者有时两个 ToggleButtons 可以同时正常工作,其余的都是空白的:
不知何故,按钮相互干扰。这可能是因为风格吗?
我背后有一些丑陋的代码,因为我需要以一种特殊的方式在按钮下方显示一个弹出窗口(在 XAML 中不容易实现)
//Popup FFT
private void visButtonFFT_Checked(object sender, RoutedEventArgs e)
{
popupFFT.IsOpen = true;
}
private void visButtonFFT_Unchecked(object sender, RoutedEventArgs e)
{
popupFFT.IsOpen = false;
}
private void popupFFT_Closed(object sender, EventArgs e)
{
visButtonFFT.IsChecked = false;
}
我有每个 ToggleButton 的代码(不聪明,我知道,但我还在学习)
您是否看到可能导致这种奇怪行为的东西?谢谢。
编辑:当我将样式从特定的 ToggleButton 移动到 UserControl 的资源时,我唯一改变的是 DataTrigger 的绑定:它以按钮的实际名称为目标,我必须将其更改为相对来源。