小生QQB 2023-07-12 15:31 采纳率: 50%
浏览 3
已结题

WPF XAML 触发器

WPF XAML显示了一个Bool选择器button,我想在触发那里改一下在控件IsEnabled属性为false时,控件背景显示的是一个置灰效果,IsEnabled属性为true时,触发效果保持原有样式

<Style x:Key="ToggleButton.Base.Style" TargetType="views:VisionToggleButton">
        <Setter Property="Foreground" Value="{StaticResource ToggleButtonFontColor}" />
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="FontSize" Value="12" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="views:VisionToggleButton">
                    <Border
                        x:Name="PART_Border"
                        BorderBrush="{StaticResource BorderBrush}"
                        BorderThickness="1"
                        Background="{StaticResource ElementGroupBackground}"
                        CornerRadius="12">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <Border
                                x:Name="RightBorder"
                                Grid.Column="0"
                                Grid.ColumnSpan="2"
                                Width="{TemplateBinding Width,
                                                        Converter={converters:ToggleButtonWidthConverter}}"
                                Height="{Binding ElementName=PART_Border, Path=Height}"
                                HorizontalAlignment="Right"
                                Background="{StaticResource ButtonFontColor}"
                                CornerRadius="{Binding ElementName=PART_Border, Path=CornerRadius}"
                                Focusable="False" />
                            <Border
                                x:Name="LeftBorder"
                                Grid.Column="0"
                                Grid.ColumnSpan="2"
                                Width="{TemplateBinding Width,
                                                        Converter={converters:ToggleButtonWidthConverter}}"
                                Height="{Binding ElementName=PART_Border, Path=Height}"
                                HorizontalAlignment="Left"
                                Background="{StaticResource ButtonFontColor}"
                                CornerRadius="{Binding ElementName=PART_Border, Path=CornerRadius}"
                                Focusable="False"
                                Visibility="Collapsed" />
                            <TextBlock
                                x:Name="Ok"
                                Grid.Column="0"
                                Height="{Binding ElementName=PART_Border, Path=Height}"
                                Margin="0"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                Text="{TemplateBinding IsCheckedString}" />
                            <TextBlock
                                x:Name="No"
                                Grid.Column="1"
                                Height="{Binding ElementName=PART_Border, Path=Height}"
                                Margin="0"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                Text="{TemplateBinding IsNotCheckedString}" />

                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter TargetName="Ok" Property="Foreground" Value="{StaticResource ButtonBackground}" />
                            <Setter TargetName="LeftBorder" Property="Visibility" Value="Visible" />
                            <Setter TargetName="RightBorder" Property="Visibility" Value="Collapsed" />
                        </Trigger>
                        <Trigger Property="IsChecked" Value="False">
                            <Setter TargetName="No" Property="Foreground" Value="{StaticResource ButtonBackground}" />
                            <Setter TargetName="LeftBorder" Property="Visibility" Value="Collapsed" />
                            <Setter TargetName="RightBorder" Property="Visibility" Value="Visible" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        
    </Style>

  • 写回答

1条回答 默认 最新

  • 小生QQB 2023-07-12 15:58
    关注

    已解决,加一层带有透明度的border即可。

    <Style x:Key="ToggleButton.Base.Style" TargetType="views:VisionToggleButton">
            <Setter Property="Foreground" Value="{StaticResource ToggleButtonFontColor}" />
            <Setter Property="VerticalAlignment" Value="Center" />
            <Setter Property="FontSize" Value="12" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="views:VisionToggleButton">
                        <Border
                            x:Name="PART_Border"
                            BorderBrush="{StaticResource BorderBrush}"
                            BorderThickness="1"
                            Background="{StaticResource ElementGroupBackground}"
                            CornerRadius="12">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>
                                <Border
                                    x:Name="RightBorder"
                                    Grid.Column="0"
                                    Grid.ColumnSpan="2"
                                    Width="{TemplateBinding Width,
                                                            Converter={converters:ToggleButtonWidthConverter}}"
                                    Height="{Binding ElementName=PART_Border, Path=Height}"
                                    HorizontalAlignment="Right"
                                    Background="{StaticResource ButtonFontColor}"
                                    CornerRadius="{Binding ElementName=PART_Border, Path=CornerRadius}"
                                    Focusable="False" />
                                <Border
                                    x:Name="LeftBorder"
                                    Grid.Column="0"
                                    Grid.ColumnSpan="2"
                                    Width="{TemplateBinding Width,
                                                            Converter={converters:ToggleButtonWidthConverter}}"
                                    Height="{Binding ElementName=PART_Border, Path=Height}"
                                    HorizontalAlignment="Left"
                                    Background="{StaticResource ButtonFontColor}"
                                    CornerRadius="{Binding ElementName=PART_Border, Path=CornerRadius}"
                                    Focusable="False"
                                    Visibility="Collapsed" />
                                <Border
                                    x:Name="IsEnableBorder"
                                    Grid.Column="0"
                                    Grid.ColumnSpan="2"
                                    Width="{TemplateBinding Width}"
                                    Height="{Binding ElementName=PART_Border, Path=Height}"
                                    HorizontalAlignment="Center"
                                    Background="#7FFFFFFF"
                                    CornerRadius="{Binding ElementName=PART_Border, Path=CornerRadius}"
                                    Focusable="False" />
                                <TextBlock
                                    x:Name="Ok"
                                    Grid.Column="0"
                                    Height="{Binding ElementName=PART_Border, Path=Height}"
                                    Margin="0"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    Text="{TemplateBinding IsCheckedString}" />
                                <TextBlock
                                    x:Name="No"
                                    Grid.Column="1"
                                    Height="{Binding ElementName=PART_Border, Path=Height}"
                                    Margin="0"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    Text="{TemplateBinding IsNotCheckedString}" />
    
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsEnabled" Value="True">
                                <Setter TargetName="Ok" Property="Foreground" Value="{StaticResource ButtonBackground}" />
                                <Setter TargetName="IsEnableBorder" Property="Visibility" Value="Collapsed" />
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter TargetName="Ok" Property="Foreground" Value="{StaticResource ButtonBackground}" />
                                <Setter TargetName="IsEnableBorder" Property="Visibility" Value="Visible" />
                            </Trigger>
                            <Trigger Property="IsChecked" Value="True">
                                <Setter TargetName="Ok" Property="Foreground" Value="{StaticResource ButtonBackground}" />
                                <Setter TargetName="LeftBorder" Property="Visibility" Value="Visible" />
                                <Setter TargetName="RightBorder" Property="Visibility" Value="Collapsed" />
                            </Trigger>
                            <Trigger Property="IsChecked" Value="False">
                                <Setter TargetName="No" Property="Foreground" Value="{StaticResource ButtonBackground}" />
                                <Setter TargetName="LeftBorder" Property="Visibility" Value="Collapsed" />
                                <Setter TargetName="RightBorder" Property="Visibility" Value="Visible" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            
        </Style>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月20日
  • 已采纳回答 7月12日
  • 创建了问题 7月12日

悬赏问题

  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多