使用“带有复选框的组合框”显示已选项目

3
我正在构建一个Windows Store应用程序,由于UI问题,我必须在组合框内实现复选框。 我遇到了以下问题:我想在“带复选框的组合框”中显示已选项目。 我想要做的事情如下图所示:http://blogs.microsoft.co.il/blogs/justguy/image_2827F1EB.png
     <ComboBox x:Name="cb2"            

                          DropDownOpened="cb2_DropDownOpened_1"         
                          DropDownClosed="cb2_DropDownClosed_1"
                          SelectionChanged="cb2_SelectionChanged_1"                              
                          Width="310" 
                          ItemsSource="{Binding Members}" 
                          DisplayMemberPath="{Binding Name}"
                          Height="50"  BorderBrush="#FF0A2562"
                           Tag="{Binding index}"

                          >


                        <ComboBox.ItemTemplate>
                        <DataTemplate>

                            <CheckBox
                                   Background="Black"
                                   BorderBrush="Black"
                                Tag="{RelativeSource TemplatedParent}"
                                Content="{Binding Name}"
                                IsChecked="{Binding Path=IsSelected,Mode=OneWay}"
                                Unchecked="CheckBox_Unchecked_1"
                                Click="CheckBox_Click"
                                />
                        </DataTemplate>

                    </ComboBox.ItemTemplate>                      

                </ComboBox>

代码后台:

private void CheckBox_Click(object sender, RoutedEventArgs e)
    {

        CheckBox chk = (CheckBox)sender;


        string k =(string) chk.Content;

        chkstr.Add(k);


    }
 private void CheckBox_Unchecked_1(object sender, RoutedEventArgs e)
    {
        CheckBox chk = (CheckBox)sender;
        string k = (string)chk.Content;

        chkstr.Remove(k);
       // vl.selectedmembers.Remove(key);
    }
2个回答

3
在微软定义的ComboBox标准模板中,在ContentPresenter中添加一个TextBlock。将TextBlock的Text属性与字符串绑定。现在,您可以通过显式地将项转换为字符串,将选中的项添加到字符串中。 @Patrick:ItemTemplate和ItemContainerStyle都可以使用。

0

您需要重新设计ComboBoxItem。请使用ComboBox.ItemContainerStyle而不是ComboBox.ItemTemplate。在ComboBox.ItemContainerStyle内部,为Template设置一个setter。复制默认模板并添加一个CheckBox。将CheckBox.IsChecked绑定到IsSelected,或者在Selected可视状态中使用对象动画将IsChecked动画为true。

您的方法行不通,因为IsSelected是ComboBoxItem容器上的属性,而不是数据上下文中的属性。


谢谢回复。但是如何在组合框中用逗号分隔显示已选项目,就像这张图片一样:链接 - Nitin Maheshwari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接