c# - 似乎无法在我的脑海中获得 WPF DataBinding

标签 c# wpf data-binding

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

这是我想为初学者做的事情:

例如,我有一个事物的列表,如下所示:

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

现在通常我会去

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

但据我所知,我可以以某种方式不这样做,而是使用数据绑定(bind)为我填充组合框。

我似乎无法得到的是我把“thingList”放在哪里?我是否将其作为某个地方的单独属性(property)?我将该属性放在哪里?

我现在觉得很愚蠢,因为我已经为此苦苦挣扎了一段时间,但我找不到任何例子可以让我理解这个 - 可能非常简单 - 的概念。

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

最佳答案

使用 ObservableCollection<T>用于 WPF 中的数据绑定(bind)。 T 是你的类(class)。请参见下面的示例

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将为您提供选择类(class)的选项。在这里你可以选择 c,d,e x 任何东西,但要确保它应该早点使用

关于c# - 似乎无法在我的脑海中获得 WPF DataBinding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5382724/

相关文章:

c# - 如何防止 richTextBox 在其中粘贴图像?

c# - 自定义 StronglyTyped BindingSource 项添加

c# - Windows 应用商店应用程序数据将 TextBlock 绑定(bind)到来自 Web 服务的对象

c# - 使用 C# 解析结果中的 JSON 数据

c# - 语音合成器 "Input string was not in a correct format"

c# - 窗口依赖注入(inject)

wpf - 如何在wpf中动态更改Xaml页面标题?

c# - 以编程方式隐藏 WPF 功能区标题

WPF,与 TemplatedParent 绑定(bind)时有趣的事情

wpf - 强制 WPF DataGrid 重新生成自身