所以我最终决定从 WinForms 转移到 WPF,我的旅程相当有趣。我有一个简单的应用程序,我在其中将 an 绑定ObservableCollection
到ListBox
.
我有一个Animal
实体:
namespace MyTestApp
{
public class Animal
{
public string animalName;
public string species;
public Animal()
{
}
public string AnimalName { get { return animalName; } set { animalName = value; } }
public string Species { get { return species; } set { species = value; } }
}
}
和一个AnimalList
实体:
namespace MyTestApp
{
public class AnimalList : ObservableCollection<Animal>
{
public AnimalList() : base()
{
}
}
}
最后这是我的主窗口:
<Window x:Class="MyTestApp.Window3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyTestApp"
Title="Window3" Height="478" Width="563">
<Window.Resources>
<local:AnimalList x:Key="animalList">
<local:Animal AnimalName="Dog" Species="Dog"/>
<local:Animal AnimalName="Wolf" Species="Dog"/>
<local:Animal AnimalName="Cat" Species="Cat"/>
</local:AnimalList>
</Window.Resources>
<Grid>
<StackPanel Orientation="Vertical" Margin="10,0,0,0">
<TextBlock FontWeight="ExtraBold">List of Animals</TextBlock>
<ListBox ItemsSource="{Binding Source={StaticResource animalList}, Path=AnimalName}"></ListBox>
</StackPanel>
</Grid>
现在,当我运行应用程序时,我看到列表框填充了三个项目:“D”、“o”和“g”,而不是“Dog”、“Wolf”和“Cat”:
我有一种强烈的感觉,我在某处做了一些愚蠢的事情(也许是 AnimalList 构造函数?)但我不知道它是什么。任何帮助表示赞赏。