带有DataBindings的Silverlight / C#简单ListView示例

时间:2013-12-18 12:02:50

标签: c# silverlight listview windows-8.1

我正在尝试创建一个由Dataset / ItemSource填充的简单ListView。

目标是当有人选择ITEM-A时,我知道该条目的值是 (ITEM-A的值为27012)

具有(VoidPanel.xaml)的xaml

<ListView ItemsSource="{Binding names.FirstName}" x:Name="lvReasons" IsSwipeEnabled="False" IsItemClickEnabled="False" SelectionMode="Single">
</ListView>

(VoidPanel.xaml.cs)的cs

namespace App01.Win8.Controls
{

    public sealed partial class VoidPanel : UserControl
    {
        private ObservableCollection<VoidListElement> names = new ObservableCollection<VoidListElement>();
        public VoidPanel()
        {
            this.InitializeComponent();

            names = new ObservableCollection<VoidListElement>();

            names.Add(new VoidListElement("ITEM-A", "27017"));
            names.Add(new VoidListElement("ITEM-B", "27018"));

            this.DataContext = this;
        }
    }
}

班级元素

namespace App01.Win8.DataModel
{
    public class VoidListElement
    {
        public VoidListElement(string firstname, string lastname)
        {
            this.FirstName = firstname;
            this.LastName = lastname;
        }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}

问题是它无法正常工作。我没有在屏幕上呈现任何项目。

我知道ListView可以定义一个DataContext,在这种情况下我没有设置一个,所以我假设它使用当前的类。

据我所知,ListView可以定义一个ItemSource,它已绑定到应该从DataContext中提取的names.Firstname。

有人可以给我一些提示,或者一个体面的工作示例。

2 个答案:

答案 0 :(得分:2)

XAML:

<ListView x:Name="lvReasons" 
     ItemsSource="{Binding names}" 
     DisplayMemberPath="FirstName"
     IsSwipeEnabled="False" IsItemClickEnabled="False" SelectionMode="Single" >
</ListView>

C#:

public ObservableCollection<VoidListElement> names = new ObservableCollection<VoidListElement>();

答案 1 :(得分:0)

回答......

具有(VoidPanel.xaml)的xaml

<ListView ItemsSource="{Binding names.FirstName}" x:Name="lvReasons" 
**DisplayMemberPath="FirstName"**
IsSwipeEnabled="False" IsItemClickEnabled="False" SelectionMode="Single">
</ListView>

(VoidPanel.xaml.cs)的cs

namespace App01.Win8.Controls
{

    public sealed partial class VoidPanel : UserControl
    {
        private ObservableCollection<VoidListElement> names;

    **public ObservableCollection<VoidListElement> names
    { set; get; }**

        public VoidPanel()
        {
            **names = new ObservableCollection<VoidListElement>();**

            names.Add(new VoidListElement("ITEM-A", "27017"));
            names.Add(new VoidListElement("ITEM-B", "27018"));

            this.DataContext = this;
            **this.InitializeComponent();**
        }
    }
}

班级元素

namespace App01.Win8.DataModel
{
    public class VoidListElement
    {
        public VoidListElement(string firstname, string lastname)
        {
            this.FirstName = firstname;
            this.LastName = lastname;
        }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}