如何在Xceed WPF工具箱中的CheckComboBox中显示下拉列表和选定项的不同值

本文关键字:下拉列表 CheckComboBox Xceed WPF 工具箱 显示 | 更新日期: 2023-09-27 18:05:39

我有一个CheckComboBox绑定到一个列表,包括一个简单的索引和一个完整的描述,像这样:

code   full_description
1      Bus
2      Car
3      Motobike

是否有可能只显示1、2、3所选项目和显示完整的描述时,下拉列表?我在这里发现了一个类似的问题。但是由于CheckComboBox使用了差异实现,我修改了class ComboBoxItemTemplateSelector的部分如下:

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {   
        SelectorItem selectorItem = VisualTreeHelpers.GetVisualParent<SelectorItem>(container);
        if (selectorItem != null)
        {
            return DropDownTemplate;
        }
        return SelectedTemplate;
    }

对于下拉列表可以很好地工作,但是对于选中的项目就不行了。我试图挖掘CheckComboBox的源代码,但一无所获。希望有人能帮我。谢谢。

如何在Xceed WPF工具箱中的CheckComboBox中显示下拉列表和选定项的不同值

您是否尝试设置ItemContainerStyleContentTemplate ?

<ComboBox.ItemContainerStyle>
    <!--Not sure what TargetType you should use-->
    <Style TargetType="ComboBoxItem">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <!--Here goes your DropDownTemplate-->
                    <TextBlock Text="{Binding Description}" />
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ComboBox.ItemContainerStyle>

同样,将DisplayMemberPath设置为您想要的属性。

1。在你的项目类中重写ToString():

 public override string ToString()
 {
    return  full_description;
 }

2。set DisplayMemberPath to code

<CheckComboBox ItemsSource="{Binding CarList}"  
              DisplayMemberPath="code" />