【问题标题】:Silverlight control to group other controls together for data bindingSilverlight 控件将其他控件组合在一起以进行数据绑定
【发布时间】:2011-03-21 04:00:12
【问题描述】:

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

【问题讨论】:

    标签: silverlight data-binding


    【解决方案1】:

    我认为这些答案中的任何一个都是正确的,但我认为这不适用于我的应用程序。 MVVM 方法对我的应用程序来说太过分了,而其他两种方法由于各种原因对我不起作用。我将在代码隐藏中完成所有操作。

    【讨论】:

      【解决方案2】:

      您可以使用DataForm控件并将其“IsReadOnly”属性设置为True,该控件通常用于编辑数据,记得设置AutoGenerateFields="True" ...

      PS : 我假设你正在使用 Silverlight 的 Ria 服务

      【讨论】:

        【解决方案3】:

        在任何布局控件中对 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; }
        }
        

        【讨论】:

        • 那么如何将 Grid 绑定到特定的 Person 实例?
        • 你现在绑定到你视图中的 Person 了吗?如何?也许您可以更好地阐明您要完成的工作。您是在寻找可重复使用的控件还是只是一种逻辑组织绑定的方法?你只有一个人还是一个集合?我的回答中的假设是您在 UserControl 的 DataContext 上有一个公共属性 Person。使用 MVVM,该数据上下文将是一个视图模型。我更新了代码以更好地演示。
        • 我可能误解了您要查找的内容。这个答案将提供一种对相关文本块进行分组绑定的方法(带有 DataTemplate 的 ContentControl 将以相同的方式工作)。如果您正在寻找一个单独的 UserControl 来封装它,请查看 Ben 的答案。如果您有一组 Persons,请查看 ListBox 之类的 ItemsControl 并设置 DataTemplate。 DataTemplate 中的项目将类似地是相对的。
        【解决方案4】:

        您可能想阅读这篇关于 MVVM 的文章 http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

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

        【讨论】:

          猜你喜欢
          • 2011-01-08
          • 2010-10-16
          • 2013-03-30
          • 1970-01-01
          • 2011-05-05
          • 2011-10-22
          • 1970-01-01
          • 2017-11-02
          • 1970-01-01
          相关资源
          最近更新 更多