WPF - 更改复选框选中标记以图像(或隐藏)

Luk*_*zka 4 wpf checkbox image hide

任何人都可以知道是否有一种简单的方法来替换图像复选框选中标记?

我有两个图像用于"已选中"和"未选中"复选框状态.我不知道如何使用它们而不是复选标记.

我还尝试用StackPanel替换内容并将Image和TextBlock放在里面.图像通过触发切换.它工作正常,但我不知道如何删除复选标记图标.

我google了很多,发现了大量XAML(BulletDecorator等)的复杂解决方案.我个人不喜欢让我的生活复杂化,我相信有一个更简单的解决方案.

复选框要更改

She*_*dan 14

可以简单地定义你自己ControlTemplateCheckbox,在其中显示您的图片,而不是默认打勾.你可以找到默认ControlTemplateCheckbox复选框样式和模板上的MSDN页面.

在定义自己ControlTemplate的时候,从默认开始通常是一个好主意.在您的项目中工作,然后您可以根据自己的喜好开始调整它.这样,它应该保留用户习惯的所有默认行为Checkbox.

但这是我们在这里谈论的WPF ......通过一点横向思考,很容易使几个控件看起来像其他控件.例如,这里ToggleButton有一个自定义ControlTemplate,使它看起来像一个Checkbox,Image但当你点击它而不是正常的刻度线时,它会改变:

<ToggleButton Content="I'm An Image CheckBox Label" Foreground="Black">
    <ToggleButton.Template>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
            <StackPanel Orientation="Horizontal">
                <Image>
                    <Image.Style>
                        <Style>
                            <Setter Property="Image.Source" 
                                Value="/AppName;component/Images/Image1.jpg" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsChecked, 
                                    RelativeSource={RelativeSource AncestorType=
                                    {x:Type ToggleButton}}}" Value="True">
                                    <Setter Property="Image.Source" 
                                        Value="/AppName;component/Images/Image2.jpg" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Image.Style>
                </Image>
                <ContentPresenter Content="{TemplateBinding Content}" 
                    Margin="5,0,0,0" />
            </StackPanel>
        </ControlTemplate>
    </ToggleButton.Template>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)

这也将是很容易将此转换为CheckBox作为同样使用该IsChecked财产......你很可能甚至只是替换的单词的所有实例ToggleButtonCheckbox,它应该工作.