2013-09-28 7 views
0

Попытка привязать объект listbox к объекту. Код работает без ошибок, но по какой-то причине выборка данных не появляется в listboxWPF: невозможно связать объект со списком

XAML: ucDataBindingObject.xaml

<UserControl x:Class="TheProject.UserControls.ucDataBindingObject" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      Name="DataBindingObject" 
      Width="Auto" 
      Height="Auto" 
      mc:Ignorable="d"> 

    <Grid Width="130" 
      Height="240" 
      Margin="0"> 

     <ListBox Name="lbObject" 
       Width="110" 
       Height="80" 
       Margin="10,7,-9.6,0" 
       HorizontalAlignment="Left" 
       VerticalAlignment="Top" 
       DisplayMemberPath="Name" 
       ItemsSource="{Binding ElementName=ucDataBindingObject, 
             Path=Clients}" /> 

    </Grid> 
</UserControl> 

C#: ucDataBindingObject.xaml.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Windows.Controls; 
namespace TheProject.UserControls 
{ 
    public partial class ucDataBindingObject : UserControl 
    { 

     public List<Client> Clients { get; set; } 


     public ucDataBindingObject() 
     { 
      Clients = new List<Client>(); 
      Clients.Add(new Client(1, "David")); // sample data 
      Clients.Add(new Client(2, "Helen")); 
      Clients.Add(new Client(3, "Joe")); 


      InitializeComponent(); 
     } 
    } 

C# Client.cs

using System; 
using System.Linq; 

namespace TheProject.UserControls 
{ 
    public class Client 
    { 
     public int ID { get; set; } 
     public string Name { get; set; } 

     public Client(int id, string name) 
     { 
      this.ID = id; 
      this.Name = name; 
     } 
    } 
} 

ответ

3

Update привязка ItemsSource в

ItemsSource="{Binding Path=Clients}" 

и в конструкторе вашей точки зрения, установить его DataContext после InitializeComponents, как

this.DataContext = this; 

нет элемента с именем ucDataBindingObject, его имя класса вашего UserControl

ИЛИ изменить имя элемента в привязке к DataBindingObject, который вы назвали своим usercontrol

+0

Ah.Thought Мне пришлось ссылаться на код за файлом. Работал как шарм. Спасибо за помощь. –

Смежные вопросы