好的,我不是编程或C#方面的新手,我似乎无法直接理解WPF的数据绑定。我的同事对此很赞(是的,我也会问他们),但是现在我很沮丧。

这是我想为初学者做的:

例如,我有一个类似这样的列表:

List<Thing> thingList = Source.getList();


现在通常我会去

foreach(Thing t in thingList)
{
    //add thing to combobox
}


但是据我所知,我不能以某种方式执行此操作,而是使用数据绑定为我填充组合框。

我似乎无法获得的是将“ thingList”放在哪里?我会在某个地方将其设为单独的财产吗?我该把财产放在哪里?

目前,我感到非常愚蠢,因为我已经为此苦苦挣扎了一段时间,而且我找不到任何可以使我理解这个概念(可能非常简单)的示例。

有人愿意帮助我或为我提供一些我可能错过的分步指南吗?

最佳答案

在WPF中使用ObservableCollection<T>进行数据绑定。其中T是您的班级。见下面的例子

public class NameList : ObservableCollection<PersonName>
{
    public NameList() : base()
    {
        Add(new PersonName("A", "E"));
        Add(new PersonName("B", "F"));
        Add(new PersonName("C", "G"));
        Add(new PersonName("D", "H"));
    }
  }

  public class PersonName
  {
      private string firstName;
      private string lastName;

      public PersonName(string first, string last)
      {
          this.firstName = first;
          this.lastName = last;
      }

      public string FirstName
      {
          get { return firstName; }
          set { firstName = value; }
      }

      public string LastName
      {
          get { return lastName; }
          set { lastName = value; }
      }
  }


现在在XAML中。转到资源标签

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

  xmlns:c="clr-namespace:SDKSample"

  x:Class="Sample.Window1"
  Width="400"
  Height="280"
  Title="MultiBinding Sample">

  <Window.Resources>
    <c:NameList x:Key="NameListData"/>
  </Window.Resources>


<ListBox Width="200"
         ItemsSource="{Binding Source={StaticResource NameListData}}"  // Name list data is declared in resource
         ItemTemplate="{StaticResource NameItemTemplate}"
         IsSynchronizedWithCurrentItem="True"/>


xmnls:c将为您提供选择班级的选项。在这里,您可以选择c,d,e x,但要确保它应早使用

09-08 04:14