【发布时间】:2011-03-21 04:00:12
【问题描述】:
silverlight 中是否有一个控件可以将控件组合在一起以进行数据绑定。例如,假设我有一个 Person 对象,我想在 TextBlocks 中显示 fname、lname、age、height 等。是否有一个控件可以用来将这些 TextBlock 控件组合在一起并在该控件上设置 ItemSource,类似于在 DataGrid 上设置 ItemSource 然后绑定每一列?
【问题讨论】:
silverlight 中是否有一个控件可以将控件组合在一起以进行数据绑定。例如,假设我有一个 Person 对象,我想在 TextBlocks 中显示 fname、lname、age、height 等。是否有一个控件可以用来将这些 TextBlock 控件组合在一起并在该控件上设置 ItemSource,类似于在 DataGrid 上设置 ItemSource 然后绑定每一列?
【问题讨论】:
我认为这些答案中的任何一个都是正确的,但我认为这不适用于我的应用程序。 MVVM 方法对我的应用程序来说太过分了,而其他两种方法由于各种原因对我不起作用。我将在代码隐藏中完成所有操作。
【讨论】:
您可以使用DataForm控件并将其“IsReadOnly”属性设置为True,该控件通常用于编辑数据,记得设置AutoGenerateFields="True" ...
PS : 我假设你正在使用 Silverlight 的 Ria 服务
【讨论】:
在任何布局控件中对 TextBlock 进行分组,并将控件的 DataContext 绑定到 Person。如果未显式设置,则每个 TextBlock 的上下文都将相对于父级。
<UserControl DataContext="">
<UserControl.DataContext>
<SomeViewModel />
</UserControl.DataContext>
<Grid DataContext="{Binding ThePerson}">
<TextBlock Text="{Binding fname}"/>
<TextBlock Text="{Binding lname}"/>
<TextBlock Text="{Binding age}"/>
<TextBlock Text="{Binding height}"/>
</Grid>
</UserControl>
查看模型类...
public class SomeViewModel
{
public Person ThePerson { get;set; }
}
【讨论】:
您可能想阅读这篇关于 MVVM 的文章 http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
听起来您需要创建一个“PersonView”和一个“PersonViewModel”(可能还有一个“PersonCollectionViewModel”) 这将允许您将“PersonView”(A Silverlight UserControl)上的控件绑定到“PersonViewModel”。
【讨论】: