对不起可能是愚蠢的问题,我试图找到关于这个主题的内容,但结果没有任何结果。
所以我使用MVVM Light和SQLite.Net获得了UWP Windows商店应用程序,它在数据库中添加了一些文件。我想跟踪添加到数据库的文件数量,因此我为它创建了一个类和静态字段:
public class Vars : ObservableObject
{
public static Counter MyCounter = new Counter() { SongCounter = 0 };
}
public class Counter : ObservableObject
{
private int songCounter;
public int SongCounter
{
get { return songCounter; }
set
{
songCounter = value;
RaisePropertyChanged();
}
}
}
在提供数据库连接方法的Dataservice
类中,我使用myCounter
来计算添加文件的数量,如下所示:
public class Dataservice
{
public static void RebuildLibrary()
{
//getting fileList
foreach(var file in fileList)
{
//doing some stuff here
Vars.MyCounter.SongCounter++
}
}
}
(还应注意这部分有效 - MyCounter
实际上是增量)
最后,名为MainViewModel
的{{1}}中的字段绑定到XAML:
CounterText
愚蠢的问题是 - 如何将private string counterText;
public string CounterText
{
get { return counterText; }
set
{
counterText = value;
RaisePropertyChanged();
}
}
与MyCounter
绑定?我试图设置
CounterText
CounterText = Vars.MyCounter.SongCounter.ToString();
构造函数中的但它没有得到更新。我应该使用Messenger发送MainViewModel
一些通知吗?或者我完全错了,有更简单的方法来实现我的目标? :)
答案 0 :(得分:0)
在我看来,
不要只为柜台使用模型。而是删除Foreach中的++,它将在每个循环中触发PropertyChanged并在循环外使用Count
。
CounterText = filelist.Count;
如果需要,应将CounterText更改为SongCount类型int
并使用IValueConverter
。
确保你的RaisePropertyChanged();
被触发正确,你不应该这样做吗?
RaisePropertyChanged("CounterText");