Multiselect Combobox w / Flags Enum

我希望有人可以帮我解决这个问题。 我以前曾问过类似的问题,但当时我没有开始做任何事情。 我找到了SO问题链接

这与我的问题类似,但它有一个问题。 combobox不显示所选的枚举。 我在我的示例应用程序中的链接中进行了示例,但我不知道如何获取Combobox的文本以显示当前选定的项目。 有人建议怎么办? 我真的坚持这个。

这是我目前的combobox:

     

我的转换器是:

 public class WeldingProcessFlagValueConverter : IValueConverter { private WeldingProcess target; public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { WeldingProcess mask = (WeldingProcess)parameter; this.target = (WeldingProcess)value; return ((mask & this.target) != 0); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { this.target ^= (WeldingProcess)parameter; return this.target; } } 

因此,当我选择复选框的任意组合时,我的’CurWeldingProcess’显示正确的值,但我不知道如何让combobox显示所选的值(’CurWeldingProcess’)。 有任何想法吗?

如果你需要显示所选项目的“连接”(即如果我检查SAW和SMAW枚举值,我想在ComboBox文本中看到类似“SAW,SMAW”),你可以看看这个Multi在WPF中选择ComboBox 。

您将找到MVVM版本和“codebehind”版本。

编辑

好的,你可以去CodeProject并下载MultiSelectComboBox dll。 在项目中添加它。 然后在你的XAML中你可以添加:

      

然后在你的代码隐藏(我用我的示例TextAlignment枚举):

 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Dictionary itemsSource = new Dictionary(); itemsSource.Add(Convert.ToString(TextAlignment.Center), TextAlignment.Center); itemsSource.Add(Convert.ToString(TextAlignment.Justify), TextAlignment.Justify); itemsSource.Add(Convert.ToString(TextAlignment.Left), TextAlignment.Left); itemsSource.Add(Convert.ToString(TextAlignment.Right), TextAlignment.Right); MultiSelectComboBox.ItemsSource = itemsSource; } } 

MultiSelectComboBox的SelectedItems属性将包含用户选择的值。 这是你需要的吗? 如果您使用的是MVVM,则可以使用ViewModel公开ItemsSource和SelectedItems字典。