C# 带绑定的WPF自定义复选框
我希望在我的应用程序中使用带有图像的自定义复选框,而不是普通复选框。根据复选框的不同,我还需要有不同的图像,所以我想我应该在自定义的checkbox类中使用一个绑定来绑定一个包含图像的类 “我的自定义”复选框的C代码C# 带绑定的WPF自定义复选框,c#,wpf,checkbox,C#,Wpf,Checkbox,我希望在我的应用程序中使用带有图像的自定义复选框,而不是普通复选框。根据复选框的不同,我还需要有不同的图像,所以我想我应该在自定义的checkbox类中使用一个绑定来绑定一个包含图像的类 “我的自定义”复选框的C代码 public class LogoCheckBox : CheckBox { private Service _service; public Service Service { get { return (Service)GetValue
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将图像设置为内容,并且更改绑定似乎可以获得我想要的功能。谢谢