我正在努力理解数据绑定和wpf。我有一个非常简单的程序,其中包含一个对象的ObservableCollection,该对象只包含一个属性——字符串。运行时,它将列表框显示为每行一个字符,并且仅显示第一项。
这一定很简单,但是我被卡住了。如果我删除'binding.Path = ...',那么它将在每一行上显示“expOne.FNode”(三次)。
谢谢!
以下是代码: MainWindow.xaml.cs:
这一定很简单,但是我被卡住了。如果我删除'binding.Path = ...',那么它将在每一行上显示“expOne.FNode”(三次)。
谢谢!
以下是代码: MainWindow.xaml.cs:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace expOne
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
ObservableCollection<FNode> MyFileList = new ObservableCollection<FNode>();
public MainWindow()
{
MyFileList.Add ( new FNode ( "alpha" ) );
MyFileList.Add ( new FNode ( "bravo" ) );
MyFileList.Add ( new FNode ( "charlie" ) );
InitializeComponent();
Binding binding = new Binding();
binding.Source = MyFileList;
binding.Path = new PropertyPath ( "Name" );
mylistbox.SetBinding ( ListBox.ItemsSourceProperty, binding );
}
}
}
FNode.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace expOne
{
public class FNode
{
private string m_name;
public string Name
{
get { return ( m_name ); }
set { m_name = value; }
}
public FNode ( string n )
{
m_name = n;
}
public FNode()
{
m_name = "Bob";
}
}
}
MainWindow.xaml:
<Window x:Class="expOne.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox Name="mylistbox" HorizontalAlignment="Stretch" FontSize="15" >
<!--<ListBoxItem Content="First or Last" />-->
</ListBox>
</Grid>
</Window>