3

我正在构建一个 Windows 商店应用程序,由于 UI 问题,我必须在组合框中实现复选框。我遇到了以下问题:我想在 "Combobox with Checkbox" 中显示选中的项目。我想做什么: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);
    }
4

2 回答 2

3

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

于 2013-03-20T10:13:04.830 回答
0

您需要重新模板 ComboBoxItem。指定 ComboBox.ItemContainerStyle 而不是 ComboBox.ItemTemplate。在 ComboBox.ItemContainerStyle 内部,有一个模板设置器。复制默认模板并添加一个 CheckBox。将 CheckBox.IsChecked 模板绑定到 IsSelected,或使用处于 Selected 视觉状态的对象动画将 IsChecked 动画化为 true。

您的方法不起作用,因为 IsSelected 是 ComboBoxItem 容器上的属性,而不是数据上下文。

于 2013-02-26T23:33:25.873 回答