1

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

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

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

有我的课。

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

<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
        }

并且图像列表中有列表元素

有描述类,带有列表。

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
        }
    }

任何准确的想法都会有所帮助,我会全部尝试;)

4

1 回答 1

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财产。

于 2013-10-22T04:52:34.247 回答