简体   繁体   English

工具栏中的扩展WPF工具包CheckComboBox样式

[英]Extended WPF Toolkit CheckComboBox Style in ToolBar

I placed xctk CheckComboBox into a ToolBar. 我将xctk CheckComboBox放入工具栏。 I have a simple ComboBox next to it and those two look different. 我旁边有一个简单的ComboBox,这两个外观不同。 The simple ComboBox has a style of ToolBar.ComboBoxStyleKey ( https://msdn.microsoft.com/en-us/library/system.windows.controls.toolbar.comboboxstylekey(v=vs.110).aspx ). 简单的ComboBox具有ToolBar.ComboBoxStyleKey( https://msdn.microsoft.com/zh-cn/library/system.windows.controls.toolbar.comboboxstylekey ( v= vs.110).aspx)的样式。 But it's not applicable to CheckComboBox. 但这不适用于CheckComboBox。

Is it simplier to derive my own CheckComboBox from ComboBox (and have the same style then), or to change style of the CheckComboBox? 从ComboBox派生我自己的CheckComboBox(然后具有相同的样式),或者更改CheckComboBox的样式是否更简单?

How can I change the look so that the CheckComboBox looks like the ComboBox? 如何更改外观,使CheckComboBox看起来像ComboBox?

On the left, there is the ComboBox, on the right, there is a CheckComboBox: 左边是ComboBox,右边是CheckComboBox:

  • This is normal visual style: 这是正常的视觉样式:

这是正常的视觉风格

  • This is focused style: 这是重点样式:

在此处输入图片说明

Any help is very appreciated. 任何帮助都非常感谢。 Thank you, guys. 感谢大伙们。

You can easily create a checkboxcombo using ItemTemplate. 您可以使用ItemTemplate轻松创建一个checkboxcombo。 Refer below code. 请参考下面的代码。

<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; }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM