如何绑定到 usercontrol.resources for Windows Phone 8.1 (C#) 中的复杂对

本文关键字:复杂 Phone for 绑定 何绑定 usercontrol resources Windows | 更新日期: 2023-09-27 18:30:30

在过去的几天里,我已经在网上搜索了,但似乎找不到我认为非常简单的任务。 我想在我的 Windows Phone 应用程序的 XAML 页面中添加一个资源,该资源将引用一个复杂对象,但我找不到正确的方法。 这可能吗? 对象由类似于以下内容组成:

Public class ComplexClass
{
  Public string name { get; set; }
  Public int ID { get; set; }
  Public observablecollection<SimpleClass> simpleObjects { get; set; }
  Public addSimpleObject(SimpleClass newSimpleObject)
  {
    if (simpleObjects == null)
      simpleObjects = new ObservableCollection<SimpleClass>();
    simpleObjects.Add(newSimpleObject);
  }
}
Public Class SimpleClass
{
  Public String Name { get; set; }
  Public String Disc { get; set; }
}

如何绑定到 usercontrol.resources for Windows Phone 8.1 (C#) 中的复杂对

您可以使用 MVVM 来实现这一点。已经有大量可用的教程可供您访问,以向您展示如何遵循此设计模式,所以我不会深入讨论。

相反,我将向您展示一种将数据获取到视图的简单方法。

在 UserControl(或 Page)或其他任何内容的构造函数中,将 DataContext 设置为 ComplexClass 的实例:

ComplexClass complexClass;
public MyUserControl1()
{
    complexClass = new ComplexClass();
    complexClass.AddSimpleObject(new SimpleClass { Name = "Bob" });
    this.DataContext = complexClass;
    this.InitializeComponent();
}

然后在 XAML 中,可以像这样绑定到它:

<StackPanel>
    <!-- Binding to properties on ComplexClass -->
    <TextBlock Text="{Binding Name}" />
    <TextBlock Text="{Binding ID}" />
    <ListView ItemsSource="{Binding SimpleObjects}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <!-- Binding to properties on SimpleClass -->
                    <TextBlock Text="{Binding Name}" />
                    <TextBlock Text="{Binding Disc}" />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackPanel>

在不知道您的代码细节的情况下,我很难提出最适合您的方法。我会阅读 MVVM 并查看模型。