我对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));
}