C# 工具栏中的扩展WPF工具箱复选框样式
我将xctk复选框放入工具栏中。我有一个简单的组合框旁边,这两个看起来不同。简单组合框的样式为ToolBar.ComboBoxStyleKey()。但它不适用于复选框 从ComboBox派生我自己的CheckComboBox(并且具有相同的样式)或者更改CheckComboBox的样式更简单吗 如何更改外观,使复选框看起来像组合框 左边是组合框,右边是复选框:C# 工具栏中的扩展WPF工具箱复选框样式,c#,wpf,combobox,wpftoolkit,C#,Wpf,Combobox,Wpftoolkit,我将xctk复选框放入工具栏中。我有一个简单的组合框旁边,这两个看起来不同。简单组合框的样式为ToolBar.ComboBoxStyleKey()。但它不适用于复选框 从ComboBox派生我自己的CheckComboBox(并且具有相同的样式)或者更改CheckComboBox的样式更简单吗 如何更改外观,使复选框看起来像组合框 左边是组合框,右边是复选框: 这是正常的视觉样式: 这是一种专注的风格: 非常感谢您的帮助。谢谢大家。您可以使用ItemTemplate轻松创建check
- 这是正常的视觉样式:
- 这是一种专注的风格:
非常感谢您的帮助。谢谢大家。您可以使用ItemTemplate轻松创建checkboxcombo。请参阅下面的代码
<Grid>
<StackPanel>
<ComboBox x:Name="cbo">
<ComboBox.ItemTemplate>
<DataTemplate DataType="local:MyCombo">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsChecked}"/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
</Grid>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<MyCombo> lst = new List<MyCombo>();
for (int i = 0; i < 10; i++)
{
lst.Add(new MyCombo() {IsChecked = true,Name = "Name"+i});
}
cbo.ItemsSource = lst;
}
}
public class MyCombo
{
public bool IsChecked { get; set; }
public string Name { get; set; }
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
List lst=新列表();
对于(int i=0;i<10;i++)
{
添加(new MyCombo(){IsChecked=true,Name=“Name”+i});
}
cbo.ItemsSource=lst;
}
}
公共级MyCombo
{
已检查公共布尔值{get;set;}
公共字符串名称{get;set;}
}
您可以使用ItemTemplate轻松创建复选框组合。请参阅下面的代码
<Grid>
<StackPanel>
<ComboBox x:Name="cbo">
<ComboBox.ItemTemplate>
<DataTemplate DataType="local:MyCombo">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsChecked}"/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
</Grid>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<MyCombo> lst = new List<MyCombo>();
for (int i = 0; i < 10; i++)
{
lst.Add(new MyCombo() {IsChecked = true,Name = "Name"+i});
}
cbo.ItemsSource = lst;
}
}
public class MyCombo
{
public bool IsChecked { get; set; }
public string Name { get; set; }
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
List lst=新列表();
对于(int i=0;i<10;i++)
{
添加(new MyCombo(){IsChecked=true,Name=“Name”+i});
}
cbo.ItemsSource=lst;
}
}
公共级MyCombo
{
已检查公共布尔值{get;set;}
公共字符串名称{get;set;}
}
主要问题是,我的模型没有任何IsChecked属性,因此无法拥有它。我希望通过单个选定项集合绑定和更新我的选定项,xctk CheckComboBox可以做到这一点,并且很难在新的ComboBox中再次实现。我也不能使用转换器。无论如何,你的解决方案是一个简单的解决方案。感谢主要的问题是,我的模型没有任何IsChecked属性,也不能有它。我希望通过单个选定项集合绑定和更新我的选定项,xctk CheckComboBox可以做到这一点,并且很难在新的ComboBox中再次实现。我也不能使用转换器。无论如何,你的解决方案是一个简单的解决方案。谢谢