c# - ToObservableChangeSet 和 ObservableCollection 元素顺序
问题描述
我想我错过了一些东西,所以我希望有人能指出我正确的方向。
我有一个绑定到ObservableCollecion
. 然后我使用.ToObservableChangeSet
创建 Observable,并通过函数BuildComponentString()
and ToProperty()
,将此 List 转换为OAPH<string> exampleComponent
包含所有元素的列表ObservableCollection
,按它们出现在ObservableCollection
. 到目前为止一切顺利,一切正常,当我向/从 中添加/删除元素时,TextBlock很好地实时ObservableCollection
绑定到更新。string ExampleComponent
现在的问题!当我使用 Move 更改 ObservableCollection/listbox 中元素的顺序时,字符串中项目的顺序不会改变。任何人都可以解释为什么会这样以及是否有更好的方法来实现这一目标?
class FileSettingsViewModel:SettingsTabViewModelBase
{
public FileSettingsViewModel()
{
FileNameComponents = new ObservableCollection<IFileNameComponent>();
exampleComponent = this.FileNameComponents
.ToObservableChangeSet(x => x)
.ToCollection()
.Select(y => BuildComponentString(y))
.ToProperty(this, x => x.ExampleComponent);
}
private readonly ObservableAsPropertyHelper<string> exampleComponent;
public string ExampleComponent => exampleComponent.Value;
public ObservableCollection<IFileNameComponent> FileNameComponents
{
get { return fileNameComponents; }
set
{
this.RaiseAndSetIfChanged(ref fileNameComponents, value);
}
}
private string BuildComponentString(IReadOnlyCollection<IFileNameComponent> components)
{
string Output = "";
foreach (IFileNameComponent FileNameComponent in components)
{
Output = Output + FileNameComponent.Token;
}
ReplaceComponents(Output);
return Output;
}
}
编辑:所以我认为这与 ToCollection 调用有关 - 集合没有被索引。虽然不知道用什么代替它...
编辑 2:最后,我没有设法让它与 DynamicData 一起工作,但处理 collectionchanged 事件就成功了。
解决方案
推荐阅读
- python - 如何在日期中的空格之间添加/
- r - 由于错误“库中的错误(MVN):没有名为'MVN'的包”,无法在 RStudio 中使用 MVN 库
- javascript - 如何在 switch 块的每种情况下解决不同的承诺并将它们的结果传递给相同的函数?
- android - 热传递值会引发 onSuccess 响应可运行?
- wordpress - Wordpress 插件:add_submenu_page 添加顶级菜单项
- csv - 使用AWK根据多个条件合并两个文件
- amazon-ec2 - java oracle数据库变更通知
- c# - 指定 PagedListPager 选项
- dart - 导航到其他页面
- linux - 打印命令行参数 x86 程序集