gpt4 book ai didi

wpf - 为 WPF 复选框的不确定状态设置样式

转载 作者:行者123 更新时间:2023-12-03 22:37:00 26 4
gpt4 key购买 nike

我想设置 WPF 复选框的不确定状态的样式。我们有一个带有复选框的树 View 控件,我们希望不确定状态表示某些后代已选中,有些未选中。

我到处都看到的解决方案是覆盖复选框的默认控件模板并执行我需要执行的操作。

我有两个问题:

  • 我找不到控制模板
    对于普通的 Aero 复选框。这个
    一:
    http://msdn.microsoft.com/en-us/library/ms752319.aspx
    看起来很傻
  • 我从 Expression Blend 获得的控件模板中包含 BulletChrome 元素,我不知道如何处理它。

  • 那么有谁知道从哪里获得看起来“正常”的复选框控件模板,或者有没有更简单的方法来单独设置不确定状态的样式?

    我确定有一个简单的方法我只是俯瞰......对吗?

    最佳答案

    试试这个(从 publicgk 链接到的文章修改)

    <Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
    <Style x:Key="CheckRadioFocusVisual">
    <Setter Property="Control.Template">
    <Setter.Value>
    <ControlTemplate>
    <Rectangle Margin="14,0,0,0"
    StrokeThickness="1"
    Stroke="Black"
    StrokeDashArray="1 2"
    SnapsToDevicePixels="true"/>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
    </Style>

    <Style x:Key="EmptyCheckBoxFocusVisual">
    <Setter Property="Control.Template">
    <Setter.Value>
    <ControlTemplate>
    <Rectangle Margin="1"
    StrokeThickness="1"
    Stroke="Black"
    StrokeDashArray="1 2"
    SnapsToDevicePixels="true"/>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
    </Style>

    <SolidColorBrush x:Key="CheckBoxFillNormal"
    Color="#F4F4F4"/>
    <SolidColorBrush x:Key="CheckBoxStroke"
    Color="#8E8F8F"/>
    <Style x:Key="{x:Type CheckBox}"
    TargetType="{x:Type CheckBox}">
    <Setter Property="Foreground"
    Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
    <Setter Property="Background"
    Value="{StaticResource CheckBoxFillNormal}"/>
    <Setter Property="BorderBrush"
    Value="{StaticResource CheckBoxStroke}"/>
    <Setter Property="BorderThickness"
    Value="1"/>
    <Setter Property="FocusVisualStyle"
    Value="{StaticResource EmptyCheckBoxFocusVisual}"/>
    <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="{x:Type CheckBox}">
    <BulletDecorator Background="Transparent"
    SnapsToDevicePixels="true">
    <BulletDecorator.Bullet>
    <theme:BulletChrome Background="{TemplateBinding Background}"
    BorderBrush="{TemplateBinding BorderBrush}"
    RenderMouseOver="{TemplateBinding IsMouseOver}"
    RenderPressed="{TemplateBinding IsPressed}"
    IsChecked="{TemplateBinding IsChecked}"/>
    </BulletDecorator.Bullet>
    <ContentPresenter Margin="{TemplateBinding Padding}"
    VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
    RecognizesAccessKey="True"
    SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
    </BulletDecorator>
    <ControlTemplate.Triggers>
    <Trigger Property="IsChecked"
    Value="{x:Null}">
    <!-- TODO: Do Stuff Here -->
    </Trigger>
    <Trigger Property="HasContent"
    Value="true">
    <Setter Property="FocusVisualStyle"
    Value="{StaticResource CheckRadioFocusVisual}"/>
    <Setter Property="Padding"
    Value="4,0,0,0"/>
    </Trigger>
    <Trigger Property="IsEnabled"
    Value="false">
    <Setter Property="Foreground"
    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
    </Trigger>
    </ControlTemplate.Triggers>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
    </Style>
    </Window.Resources>
    <StackPanel>
    <CheckBox IsChecked="True" Content="Checked"/>
    <CheckBox IsChecked="{x:Null}" Content="Unknown"/>
    <CheckBox IsChecked="False" Content="Not Checked"/>
    </StackPanel>
    </Window>

    关于wpf - 为 WPF 复选框的不确定状态设置样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673570/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com