调用刷新函数不会导致显示更新的绑定列表,而是调用相同函数的按钮

时间:2016-09-01 10:04:01

标签: c# wpf listview refresh viewmodel

我对WPF很新,我为事先的新秀错误道歉。

我正在处理更大的代码,我希望在将文件添加到文件夹时在列表中刷新。在那个特定的页面中,已经有一个触发更新功能的刷新按钮,但是当我尝试从该视图模型外部调用它时,它不会导致刷新,尽管它贯穿整个过程的每一步。重点是虽然从两个方向调用时刷新列表,但只有在从按钮调用时才会显示更新版本。

到目前为止,我已尝试更改权限,属性更改触发器的顺序以及提升模拟按钮单击

在所有这些情况下,一切正常,它会运行并完成更新过程,但新项目不会自动显示

知道它为什么不起作用?

这里是相应的代码位

<Button x:Name="RefreshButton" Content="Refresh" Width="Auto" Margin="5" Click="RefreshCommand"/>

和cs

  private void RefreshCommand(object sender, RoutedEventArgs e)
    {
        var btn = (Button)sender;
        var dc = (ViewModelPage)btn.DataContext;
        dc.RefreshAndFilterList(); // this is the refresh and filter function which works on its own 
    }

这是列表xaml

 <ListView Name="SnapsList" ItemsSource="{Binding ImagesContainer.CompleteImagesList, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding ImagesListSelectedItem}" PreviewMouseLeftButtonDown="listFiles_MouseLeftButtonDown" SelectionChanged="listFiles_SelectionChanged" >

当我从viewmodel外部收到新文件的通知时,这就是我调用它的方式。

ViewModelPage.RefreshTS = !ViewModelPage.RefreshTS;

    private bool _RefreshTS = false;
    public bool RefreshTS
    {
        get
        {
            return _RefreshTS;
        }
        set
        {

            _RefreshTS = value;
            RefreshAndFilterList();

            NotifyPropertyChanged();}


       } 

EDIT 添加了通知方法

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }

0 个答案:

没有答案