有界元素的ItemsSource未在视图中更新

时间:2013-10-21 19:24:07

标签: c# xaml mvvm binding inotifypropertychanged

我有一个简单的ListView什么绑定到对象的(TaxonDescription)列表。

当我选择另一个TaxonDescription时,ListView的元素不会更新。

也许我需要NotifyPropertyChanged,但我到处都试过。

有我的课程。

在页面的代码隐藏中,我检查了ItemSource,它有正确的列表元素,只是没有更新到View。

<ListView ItemsSource="{Binding Descriptions}" 
          SelectedItem="{Binding ActualSelectedDescription, Mode=TwoWay}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding DescriptionName}"></TextBlock>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>


// this not updated
<ListView ItemsSource="{Binding ActualSelectedDescription.Images}"> 
    <ListView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding NormalUri}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

<TextBlock Text="{Binding ActualSelectedDescription.Name}"/> //This is works well

ActualSelectedDescription由事件更改。

public TaxonDescription ActualSelectedDescription
        {
            get{return actualSelectedDescription;}
            set { actualSelectedDescription = value;
                  RaisePropertyChanged("ActualSelectedDescription"); } 
            //In the setter the Images are in the list
        }

Images 列表中有list元素

有Description类,带有列表。

class TaxonDescription
    {
        public List<BaseImage> Images { get; private set; }
                    public  string Name { get; private set; } 

        public TaxonDescription(string taxonName, string descriptionName)
        {
            Name = taxonName;
            Images = new List<BaseImage>();
            //Adding some element
        }
    }

任何准确的想法都可以提供帮助,我会全部尝试;)

1 个答案:

答案 0 :(得分:0)

ActualSelectedDescription.Images没有变更通知。

尝试添加Images属性的通知。

如果无法做到这一点,请将Images设为ObservableCollection<BaseImage>

如果这是一个问题,请尝试将数据上下文设置为通知属性:

// this should start updating
<ListView DataContext="{Binding ActualSelectedDescription}"
          ItemsSource="{Binding Images}"> 
    <ListView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding NormalUri}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

编辑:

注意到TaxonDescription不是public - 这是SO中的拼写错误还是您实际代码中的私有类?

因为如果它是私有的,ItemsSource="{Binding ActualSelectedDescription.Images}"将无效,因为无法访问Images属性。