将项目添加到DataBound集合时,为什么视图没有更新?

本杰明·霍尔

我的简化代码如下所示:

模型

class Playlist : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string PropertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
    }

    private ObservableCollection<Track> _tracks;
    public ObservableCollection<Track> Tracks
    {
        get
        {
            return _tracks;
        }
        set
        {
            _tracks = value;
            NotifyPropertyChanged("Tracks");
        }
    }
}

视图模型

class HubPageViewModel : INotifyPropertyChanged
{
    private Playlist _currentPlaylist;

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    public Playlist CurrentPlaylist
    {
        get
        {
            return _currentPlaylist;
        }
        set
        {
            _currentPlaylist = value;
            NotifyPropertyChanged("CurrentPlaylist");
        }
    }

    public HubPageViewModel()
    {
        _currentPlaylist = new Playlist();
    }
}

看法

public sealed partial class HubPage : Page
{
    private HubPageViewModel _hubPageViewModel;

    public HubPageViewModel HubPageViewModel
    { 
        get
        {
            return _hubPageViewModel;
        }
    }

    public HubPage()
    {
        this.InitializeComponent();

        viewModel = new HubPageViewModel();
    }
}

XAML

<Page
x:Class="MyProject.HubPage"
DataContext="{Binding HubPageViewModel , RelativeSource={RelativeSource Self}}"
mc:Ignorable="d">

<snip>

    <HubSection x:Uid="HubSection5" Header="Now Playing"
                    DataContext="{Binding CurrentPlaylist}" HeaderTemplate="{ThemeResource HubSectionHeaderTemplate}">
            <DataTemplate>
                <ListView 
                    AutomationProperties.AutomationId="ItemListViewSection5"
                    AutomationProperties.Name="Items In Group"
                    SelectionMode="None"
                    IsItemClickEnabled="True"
                    ItemsSource="{Binding Tracks}"
                    ItemClick="ItemView_ItemClick"
                    ContinuumNavigationTransitionInfo.ExitElementContainer="True">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Margin="0,0,0,27.5" Holding="StackPanel_Holding">
                                <TextBlock Text="{Binding Title}" Style="{ThemeResource ListViewItemTextBlockStyle}" />
                            </StackPanel>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </DataTemplate>
        </HubSection>
 <snip>

为什么不是我的观点更新,当我添加或删除Track我的Playlist

本杰明·霍尔

我发现了问题:我没有正确删除或添加曲目。我在模型上修改了它们,而不是在我的Collection属性上修改了它们。

修改属性后,事件就会通过,并且视图也会更新。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么将项目添加到 ObservableCollection 时我的视图没有更新

没有将项目添加到集合中

将项目添加到绑定的可观察集合时,WPF树视图可见性转换器未更新

在将项目添加到集合时更改单元格颜色

将新对象添加到集合时,更新角度treeview指令

将新项目添加到集合后,为什么我的MongoDB查询变慢?

为什么我的子视图没有添加到我的滚动视图?

如何调试为什么我在 Java 中的对象/数组代码没有将项目添加到包中?

将项目添加到ViewModel中的属性后,为什么observableArray无法实现视图?

为什么条件表达式将新项目添加到列表视图

将项目添加到数组时视图不会更新

在添加到集合时防止重复

将选定的项目添加到集合

Rails低级缓存:ActiveRecord对象updated_at更改时或将新对象添加到集合时更新缓存

为什么将 EF 添加到具有新 Razor 页面的项目中

为什么 UtcDateTime 函数没有将偏移量添加到 UTC 日期?

为什么Qt将“ PWD”添加到没有相对引用的库中?

为什么这个gem没有将rake任务添加到Rails应用中?

为什么没有将所需的属性添加到变量?

Firestore - 将文档添加到子集合时集合的幻影重复

当我在IntellJ IDEA中运行spring boot项目时,为什么没有将依赖项添加到classpath中?

为什么addAll()不支持将集合的副本添加到集合?

为什么我可以通过迭代器添加到项目集合?

为什么我添加到“工作区”文件夹中的项目没有显示?[蚀]

ASP.NET 页面加载事件为什么项目没有被添加到下拉列表控件中

流星DDP:如何将新文档添加到集合时得到通知

将范围索引添加到Azure DocumentDB集合时发生异常

ReactJS:创建子集合时将数据添加到文档

将文档添加到Firestore集合时触发云功能