C# 是否可以从可观察的集合中绑定一个值?
我创建了以下类:C# 是否可以从可观察的集合中绑定一个值?,c#,xaml,observablecollection,C#,Xaml,Observablecollection,我创建了以下类: class WorkBook { public string WorkSheetName { get; set; } public int TotalRows { get; set; } public string LastPopulatedDate { get; set; } } 并用5个不同的“工作簿”对象填充了以下集合: public ObservableCollection<WorkBook> WorkBookResults
class WorkBook
{
public string WorkSheetName { get; set; }
public int TotalRows { get; set; }
public string LastPopulatedDate { get; set; }
}
并用5个不同的“工作簿”对象填充了以下集合:
public ObservableCollection<WorkBook> WorkBookResults { get; set; }
publicobservableCollection工作簿结果{get;set;}
在XAML中,是否可以根据工作表名称执行Linq语句来访问这些WorkBookData对象之一
也就是说,如果工作表名称=x且在WorkBookDataResults集合中,标签将显示“LastPopulatedDate”
我当时不需要更改此值,只需显示它即可
提前感谢:)如果您可以将可观察的收藏更改为字典:
公共字典工作簿结果{get;set;}
然后可以在xaml中按如下方式进行绑定:
<TextBlock Text="{Binding Path=WorkBookResults[Sheet 1].LastPopulatedDate}"></TextBlock>
因此,在上面的xaml中,我们要显示LastPopulatedDate值
对于“表1”工作表
工作簿结果字典的填充方式如下:
WorkBookResults = new Dictionary<string, WorkBook>();
var sheetName = "Sheet 1";
var book = new WorkBook()
{
WorkSheetName = sheetName,Ad
TotalRows = 10,
LastPopulatedDate = DateTime.Now.ToString()
};
WorkBookResults[sheetName] = book;
WorkBookResults=newdictionary();
var sheetName=“表1”;
var book=新工作簿()
{
工作表名称=工作表名称,Ad
TotalRows=10,
LastPopulatedDate=DateTime.Now.ToString()
};
工作簿结果[sheetName]=工作簿;
Not本身无法直接用XAML表示,但借助IValueConverter
或IMultiValueConverter
的帮助,在XAML中构造此条件绑定应该相当容易。但是,我有两个问题:如果WorkSheetName不在WorkBookDataResults集合中,标签应该显示什么?还有一个问题:)你提到的WorkBookData是什么?IValueConverter是一个很酷的解决方案,但也解决了这个问题-因此我建议只在数据上下文中制作和公开(其中WorkBookResults
是)另一个属性,例如,CurrentBookDate
——在内部执行计算,如果没有书适用,则输出空字符串/日期——因为它是一个相对简单的“只读”,不需要执行属性更改为同步和所有