【发布时间】:2011-07-25 15:58:41
【问题描述】:
在下面的代码中,UnitOccupierDetails 集合正确绑定,但 OwnersCountString 没有。谁能解释为什么?这段代码在我的 ViewModel 中:
private void BindSelectedStructure(object param)
{
UnitOccupierDetails.Clear();
Structure selectedStructure = (Structure)param;
this.SelectedStructure = selectedStructure;
int StructureID = selectedStructure.IDStructure;
loadOwners = context.Load<UserOccupier>(context.GetUnitOccupierDetailsQuery(StructureID), OwnersLoadedCallback, false);
}
private void OwnersLoadedCallback(LoadOperation<UserOccupier> op)
{
int Counter = 0;
foreach (var item in op.Entities)
{
Counter++;
UnitOccupierDetails.Add(item as UserOccupier);
}
OwnersCountString = "Owners(" + Counter.ToString() + ")";
}
还有 XAML:
<TextBlock Text='{Binding OwnersCountString,Source={StaticResource ViewModel},Mode=OneWay}'></TextBlock
OwnersCountStringProperty:
private string _ownersCountString;
public string OwnersCountString
{
get { return _ownersCountString; }
set { _ownersCountString = value; RaisePropertyChanged("OwnersCountString"); }
}
【问题讨论】:
-
又是一条评论。 (说真的,请尝试为您的问题提供更具描述性的标题。它们不会全部按顺序出现,因此很难从主页知道问题的内容。)
-
那不是 MVVM,
public string OwnersCountString {get;set;}不会像你期望的那样工作。此外,这也是 UI 的问题,应该使用绑定中的转换器和/或 StringFormat 来处理。哦,你应该检查命名的框架指南。另外,请原谅我没有让这看起来很有帮助。 -
点科迪。威尔,我发布的代码显然只是MVVM的一部分。 OwnerCountString 根据需要引发属性更改事件。 BindSelectedStructure 是 ICommand 调用并且运行良好。唯一不起作用的是设置 STRING 属性。那不应该需要转换器吗?即使我使用纯字符串(没有 Counter.ToString()),绑定也不起作用。
-
请查看我更新的代码帖子,其中显示了属性代码。
-
威尔,你有没有机会添加意见或建议,或者你完成了吗?
标签: silverlight silverlight-4.0 mvvm