C# 带绑定的WPF自定义复选框

C# 带绑定的WPF自定义复选框,c#,wpf,checkbox,C#,Wpf,Checkbox,我希望在我的应用程序中使用带有图像的自定义复选框,而不是普通复选框。根据复选框的不同,我还需要有不同的图像,所以我想我应该在自定义的checkbox类中使用一个绑定来绑定一个包含图像的类 “我的自定义”复选框的C代码 public class LogoCheckBox : CheckBox { private Service _service; public Service Service { get { return (Service)GetValue

我希望在我的应用程序中使用带有图像的自定义复选框,而不是普通复选框。根据复选框的不同,我还需要有不同的图像,所以我想我应该在自定义的checkbox类中使用一个绑定来绑定一个包含图像的类

“我的自定义”复选框的C代码

public class LogoCheckBox : CheckBox
{
    private Service _service;

    public Service Service
    {
        get { return (Service)GetValue(ServiceProperty); }
        set
        {
            SetValue(ServiceProperty, value);
            UncheckedImage = value.OtherLogo;
            CheckedImage = value.Logo;
        }
    }
    public static readonly DependencyProperty ServiceProperty =
        DependencyProperty.Register("Service", typeof(Service), typeof(LogoCheckBox));

    public ImageSource UncheckedImage { get; private set; }
    public ImageSource CheckedImage { get; private set; }
    public LogoCheckBox()
    {

    }
    void CheckedHandler(object sender, RoutedEventArgs e)
    {
        //Change displayed image
    }
}
当涉及到用XAML设计东西的样式时,我非常困惑,所以我有了想要的行为


我的问题基本上是:我是否走上了正确的轨道(这是实现功能的一个好方法),如果是,我如何正确地设置样式?

如果您只想更改视觉外观,那么正确的方法就是简单地重新设置默认
复选框的模板。但是,如果后面有复杂的逻辑,则可能必须使用自定义控件。从最简单到最难:
UserControl
,新模板,自定义控件(通常带有自定义绘图)。所以真正的问题是你为什么要走最艰难的路?你使用MVVM吗?组合框的映像可以由VM提供(通过简单绑定),而使用哪个映像的逻辑可以是VM本身的一部分、转换器或(在复杂情况下)行为。对于将-
UserControl
与自己的虚拟机一起重用,这将非常理想。您可以改用ToggleButton,并可以使用ToggleButton将图像设置为内容,并且更改绑定似乎可以获得我想要的功能。谢谢