这是我的问题,我有以下数据结构:
public class Job : INotifyPropertyChanged {
public StateEnum State {
get { return this.state; }
private set {
this.state = value;
this.OnPropertyChanged();
}
}
}
public class MainWindow : Window, INotifyPropertyChanged
public List<Job> Jobs {
get { return this.jobs; }
private set {
this.jobs = value;
this.OnPropertyChanged();
}
}
}
我想在主窗口中显示作业的全局状态摘要。
我首先尝试在Jobs列表上创建数据绑定,然后使用自定义IValueConverter显示全局状态。问题:当作业状态发生变化时,它不会刷新(因为它绑定到集合而不是状态)。
ProgressState="{Binding Jobs, Converter={StaticResource JobsToProgressState}, ElementName=MainWindow}"
所以我试图找到一个解决方案,我可以将作业的所有嵌套属性绑定到IMultiValueConverter。我没有找到任何语法来使这项工作。
是否可以做类似的事情?
编辑: 我想做像
这样的事情ProgressState="{Binding Jobs[*].State, Converter={StaticResource JobsToProgressState}, ElementName=MainWindow}"
并在JobsToProgressState转换器中检索包含所有作业状态( StateEnum [] )的数组。
答案 0 :(得分:0)
问题是当OnPropertyChanged
的记录发生变化时,IList
不会被触发。您需要将OnPropertyChanged
的{{1}}委托给您的Job
- 列表。
这个粗略的实现将做你想要的。
Jobs
当您不再需要时,不要忘记取消您的活动注册。