如何在wpf中显示多选组合框中的多个选中项?

时间:2017-11-06 07:26:59

标签: c# wpf xaml mvvm combobox

我的Xaml代码

<ComboBox HorizontalContentAlignment="Left"
                              x:Name="Stat"
                              IsEditable="True"
                              Width="247"
                              HorizontalAlignment="Left"
                              IsReadOnly="True"
                              ItemsSource="{Binding OrderStatus,Mode=TwoWay}"                                                      
                         Text="{Binding StatusSelectedValue}"  

                          Height="26">

                    <ComboBox.ItemTemplate>
                        <DataTemplate>
                            <CheckBox  Content="{Binding Description}"
                                       IsChecked="{Binding IsChecked}"
                                       Checked="CheckBox_Checked"
                                       Unchecked="CheckBox_Unchecked"/>
                        </DataTemplate>
                    </ComboBox.ItemTemplate>
                </ComboBox>

xaml.cs

//我想在选中或取消选中项目时更新多选组合框上显示的文字

    private void CheckBox_Checked(object sender, RoutedEventArgs e)
    {
        var selectedItem = sender as CheckBox ;
        var r= selectedNode.IsChecked.Value;

//尝试获取所有已检查项目的值并将其连接并在组合框文本中显示类似下面的内容

            Stat.Text = String.Join(",",selectedItemValues.toArray());//this line of code is for example only for what i want to do
    }

非常感谢mvvm方式或xaml.cs方式的任何帮助。

1 个答案:

答案 0 :(得分:0)

 public void SetText()
    {

        if (this.SelectedItems != null)
        {
            StringBuilder displayText = new StringBuilder();
            foreach (ComboItem s in comboItemsCollection)
            {
                if (s.IsSelected == true && s.Title == Properties.Resources.CHECKALL)
                {
                    displayText = new StringBuilder();
                    displayText.Append("All");
                    break;
                }
                else if (s.IsSelected == true && s.Title != Properties.Resources.CHECKALL)
                {
                    displayText.Append(s.Title);
                    displayText.Append(',');
                }
            }
            this.Text = displayText.ToString().TrimEnd(new char[] { ',' });
        }
        // set DefaultText if nothing else selected
        if (string.IsNullOrEmpty(this.Text))
        {
            this.Text = this.DefaultText;  
        }
    }

这就是我所做的。它显示所有选定的项目&#34 ;;&#34;作为分隔符。如果你有一个&#34; All&#34;复选框或您选择全部,它只显示全部。当然我不知道你正在使用什么对象,所以我保留了我的代码(你需要更改循环部分,特别是ComboItem部分)

请注意,这是一个函数(当然),因此您可以直接添加代码来执行String.Join,也可以将其称为