Binding impossible sur une custom ListBox
J'ai défini une listbox personnalisée de la mnière suivante:
Code:
1 2 3 4 5
| <UserControl x:Class="TestBinding.CustomListBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ListBox x:Name="InnerList" />
</UserControl> |
Bon, ca n'a pas trop d'intérêt présenté comme ca, mais c'est pour réduire le problème à son plus simple niveau.
Dans le code-behind j'ai ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| using System.Windows.Controls;
using System.Collections;
namespace TestBinding
{
public partial class CustomListBox : UserControl
{
public CustomListBox()
{
InitializeComponent();
}
public IEnumerable ItemsSource
{
get { return InnerList.ItemsSource; }
set { InnerList.ItemsSource = value; }
}
}
} |
J'ai également créer une classe contenant mes données de cette manière:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Collections.Generic;
namespace TestBinding
{
public class Employee
{
public string Nom { get; set; }
public int Age { get; set; }
public override string ToString()
{
return string.Format("{0} is {1} years old.", Nom, Age);
}
}
public class EmployeesVM: INotifyPropertyChanged
{
public ObservableCollection<Employee> Employees { get; set; }
public EmployeesVM()
{
Employees = new ObservableCollection<Employee>();
Employees.Add(new Employee() { Nom = "Toto", Age = 27 });
Employees.Add(new Employee() { Nom = "Tata", Age = 35 });
}
public event PropertyChangedEventHandler PropertyChanged;
}
} |
Et dans la page qui utilise le usercontrol CustomListBox, j'ai ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <UserControl x:Class="TestBinding.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300" xmlns:o="clr-namespace:TestBinding">
<UserControl.Resources>
<o:EmployeesVM x:Key="MyViewModel" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource MyViewModel}">
<StackPanel>
<o:CustomListBox ItemsSource="{Binding Employees}" />
</StackPanel>
</Grid>
</UserControl> |
Lorsque j'éxécute mon projet, j'obtiens cette exception sur le InitializeComponent de la page principale:
AG_E_PARSER_BAD_PROPERTY_VALUE [Line: 10 Position: 42]
Je planche depuis quelque temps sur cette erreur, et je ne trouve pas de manière convenable pour faire mon binding sur mon custom contrôle.
Merci
===================
Blog : Silverlight News