首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CompositeCollection设置SelectedItem绑定WPF的ComboBox

使用CompositeCollection设置SelectedItem绑定WPF的ComboBox
EN

Stack Overflow用户
提问于 2013-06-05 05:42:28
回答 1查看 1.1K关注 0票数 1

我有一个绑定的WPF comboBox,它的ItemsSource设置为CompositeCollection。我尝试这样做是为了适应在“常规”对象的ObservableCollection之前添加和选择。我不明白的是,在代码隐藏中,如何选择这些添加的选项之一。

这就是我构建CompositeCollection的方式:

代码语言:javascript
复制
private CompositeCollection CreateItemsSource(ObservableCollection<T> source)
{
  CompositeCollection cmpc = new CompositeCollection();

  cmpc.Add(new ComboBoxItem { Content = "<Select>" });
  cmpc.Add(new ComboBoxItem { Content = "<Add New...>" });

  var cc1 = new CollectionContainer { Collection = source };
  cmpc.Add(cc1);

  return cmpc;
}

这是ComboBox的外观:

代码语言:javascript
复制
<DataTemplate x:Key="LookupComboTemplate">
  <TextBlock Text="{Binding}"/>
</DataTemplate>

  <ComboBox ItemsSource="{Binding SubCategories.ItemsSource}" 
            ItemTemplate="{StaticResource LookupComboTemplate}">
    <ComboBox.SelectedItem>
      <Binding Path="SourceData.SubCategoryObj" Mode="TwoWay"></Binding>
    </ComboBox.SelectedItem>
  </ComboBox>

我遇到了SelectedItem SourceData.SubCategoryObj为空的情况(这是一个可选属性)。在本例中,我希望手动选择并显示选项。但是无论我做什么(设置SelectedIndex被忽略,将SelectedValue设置为CompositeCollection中的ComboBoxItem也被忽略),当它呈现时,我得到一个空白的ComboBox。

如果有任何关于我如何做到这一点的建议我将不胜感激。

谢谢!科里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-05 05:52:21

你应该能够用你的SelectedItem绑定的定制值转换器来修复这个问题。http://wpftutorial.net/ValueConverters.html应该会给你一些建议。

我不确定combox是想要一个简单的字符串还是一些复合对象,但你可以检查一下。就像这样

代码语言:javascript
复制
public class ComboConverter: IValueConverter
{
    public object Convert(object value, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
            return "<Select>";
        return value;
    }

    public object ConvertBack(object value, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        if (value.toString().Equals("<Select>")
            return null;
        return value;
    }

如果所选项目为空,则应显示"“条目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16927998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档