Lla*_*slo 6 wpf triggers togglebutton
这让我很沮丧.我有一个简单的WPF切换按钮,有两个IsChecked触发器.一个值为true,另一个值为false.没有选中按钮时,它工作正常,我的样式为false; 但是,当IsChecked为true时,系统永远不会应用该样式.它总是只使用默认的蓝色镀铬窗口样式.有任何想法吗?
<ToggleButton Content="Control 1" Width="200" Margin="0,0,0,10" Focusable="False">
<ToggleButton.Resources>
<Style TargetType="{x:Type ToggleButton}">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="1"/>
<GradientStop Color="LawnGreen" Offset="0.307"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="1"/>
<GradientStop Color="Red" Offset="0.307"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Resources>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.我确定这是显而易见的,我只是在俯视.
小智 18
ToggleButton.IsChecked切换时的布局似乎是模板的一部分.如果覆盖模板,则应该能够正确设置值.请参见覆盖ToggleButton样式
例:
<ToggleButton Content="Control 1" Focusable="False">
<ToggleButton.Template>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border CornerRadius="3" Background="{TemplateBinding Background}">
<ContentPresenter Margin="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="1"/>
<GradientStop Color="LawnGreen" Offset="0.307"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="1"/>
<GradientStop Color="Red" Offset="0.307"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ToggleButton.Template>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)
我知道,我的回答没什么新意,但newb建议的模板对我来说似乎很简单.所以我公开了我自己的ControlTemplate版本.它可能对某人有用.
<ToggleButton Width="100" Height="100">
<ToggleButton.Template>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border BorderBrush="Orange"
BorderThickness="3"
CornerRadius="3"
Margin="1"
Name="Border"
Background="{TemplateBinding Background}">
<Grid>
<Rectangle Name="FocusCue"
Visibility="Hidden"
Stroke="Black"
StrokeThickness="1"
StrokeDashArray="1 2"
SnapsToDevicePixels="True" ></Rectangle>
<ContentPresenter Margin="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Border" Property="Background" Value="IndianRed" />
<Setter TargetName="Border" Property="BorderBrush" Value="DarkKhaki" />
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="Border" Property="Background" Value="Red" />
<Setter TargetName="Border" Property="BorderBrush" Value="Orange" />
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter TargetName="FocusCue" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Background" Value="DarkRed" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ToggleButton.Template>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31880 次 |
| 最近记录: |