【问题标题】:How to show a List in a ComboBox in a ListView in MVVM Light?如何在 MVVM Light 的 ListView 中的 ComboBox 中显示列表?
【发布时间】:2015-12-02 14:08:49
【问题描述】:

我有一个对象,它有一些属性,如名称、日期和属性列表标签。此属性是标签列表。我想显示一个带有名称的 ListView,然后显示一个带有该标签列表中所有名称的 ComboBox。

像这样:

 <ListView Grid.Row="3"
                  Margin="10,0,10,0"
                  ItemsSource="{Binding ObjectList}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Name}"
                                   Foreground="Black" />
                        <ComboBox ItemsSource="{Binding Tags}" />
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
 </ListView>

这是我在 ViewModel 上的 ObservableCollection:

 private ObservableCollection<MyObject> _ObjectList = new ObservableCollection<MyObject>();
 public ObservableCollection<MyObject> ObjectList
 {
     get
     {
          return _ObjectList;
     }
     set
     {
          _ObjectList = value;
          RaisePropertyChanged("ObjectList");
     }
 }

如何将这些名称放入 ListView 内的 ComboBox 中?在那个 ComboBox 中,我看到这个 App1.Model.Object 5 次!里面有 5 个项目,但我想显示名称。

【问题讨论】:

    标签: xaml mvvm observablecollection itemssource


    【解决方案1】:

    这很正常,因为您的 Tag 是一个对象,您必须定义“要显示的属性”

    这是一个例子:

     public class Tag
     {
        public string Property1 {get; set;}
        public string Property2 {get; set;}
    
        public string Description {get; set;}
    
     }
    

    现在在您的 XAML 中,您将通过添加来绑定此属性:

     <ComboBox ItemsSource="{Binding Tags}", DisplayMemberPath=Description, Mode=Default/>
    

    【讨论】:

    • 啊该死的确实是的,现在我看到了名字,但是为什么只有我的第一个组合框被填满,而其余的都是空的?我确定有项目:D
    • 为什么会有_TagList = value;而不是 _ObjectList=value;在你的代码中?你能检查一下吗?
    • 改为_ObjectList = value
    • 您的 ObjectList 中的每个对象是否都有一个包含完整信息的填充标签列表?
    【解决方案2】:

    您必须定义应该使用什么属性来命名组合框中的元素。您可以使用属性DisplayMemberPath 执行此操作。在此示例中,TagName 是包含项目名称的 PropertyName。

    <ComboBox ItemsSource="{Binding Tags}" DisplayMemberPath="TagName" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 2011-03-09
      • 2016-03-21
      • 1970-01-01
      • 2015-11-29
      相关资源
      最近更新 更多