Silverlight控件将其他控件分组以进行数据绑定

Silverlight控件将其他控件分组以进行数据绑定,silverlight,data-binding,Silverlight,Data Binding,silverlight中是否有控件将控件分组以进行数据绑定。例如,假设我有一个Person对象,我想在文本块中显示fname、lname、age、height等。是否有一个控件可以将这些TextBlock控件组合在一起,并在该控件上设置ItemSource,类似于在DataGrid上设置ItemSource,然后绑定每列的方式?您可能想在MVVM上阅读这篇文章 听起来您需要创建“PersonView”和“PersonViewModel”(可能还需要创建“PersonCollectionViewM

silverlight中是否有控件将控件分组以进行数据绑定。例如,假设我有一个Person对象,我想在文本块中显示fname、lname、age、height等。是否有一个控件可以将这些TextBlock控件组合在一起,并在该控件上设置ItemSource,类似于在DataGrid上设置ItemSource,然后绑定每列的方式?

您可能想在MVVM上阅读这篇文章

听起来您需要创建“PersonView”和“PersonViewModel”(可能还需要创建“PersonCollectionViewModel”)
这将允许您将“PersonView”(Silverlight用户控件)上的控件绑定到“PersonViewModel”。

将任何布局控件中的文本块分组,并将控件的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>

您可以使用DataForm控件并将其“IsReadOnly”属性设置为True,此控件通常用于编辑数据,并且请记住设置AutoGenerateFields=“True”


PS:我假设您正在使用silverlight的Ria服务,我认为这些答案中的任何一个都是正确的,但是我认为这些答案不适用于我的应用程序。MVVM方法对我的应用程序来说太过分了,其他两种方法由于各种原因对我来说都不起作用。我将只做后面代码中的所有工作。

那么,如何将网格绑定到Person的特定实例?您现在正在绑定到视图中的Person吗?怎么用?也许你可以更清楚地说明你想要实现的目标。您是在寻找一个可重用的控件,还是仅仅是一种逻辑组织绑定的方法?你只有一个人还是一个收藏?在我的回答中,假设您在UserControl的DataContext上有一个公共属性人。使用MVVM,该数据上下文将是一个视图模型。我更新了代码以更好地演示。我可能误解了您要找的内容。这个答案将提供一种对相关文本块的绑定进行分组的方法(带有DataTemplate的ContentControl也会以同样的方式工作)。如果您正在寻找一个单独的UserControl来封装它,请查看Ben的答案。如果您有一组人员,请查看类似ListBox的ItemsControl并设置DataTemplate。DataTemplate中的项将具有类似的相对性。
public class SomeViewModel
{
    public Person ThePerson { get;set; }
}