[WPF] Probléme de binding dans un UserControl :(
Bonjour à tous,
Je souhaite créer un composant qui soit un menu, et dans ce menu j'ai des items qui contiennent comme valeurs un champ text, ainsi que le nom d'une classe qui sera chargé dans une frame
J'ai créé un UserControl qui fera office de l'item dans le menu et qui contient 1 TextBox ainsi qu'une propriéte Text
XAML
Code:
1 2 3 4 5 6 7 8 9 10
|
<UserControl x:Class="WPF_Test1.MonUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPF_Test1"
>
<StackPanel>
<TextBox x:Name="MaTextBox" />
</StackPanel>
</UserControl> |
C#
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public partial class MonUserControl : System.Windows.Controls.UserControl
{
private string mText;
public string Text
{
get { return this.mText; }
set { this.mText = value; this.MaTextBox.Text = this.mText; }
}
public MonUserControl()
{
InitializeComponent();
}
} |
dans ma fenetre principale j'ai une liste box qui elle fait office de menu et contien mes Items de type MonUserControl via un Template
XAML
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<Window.Resources>
<DataTemplate x:Key="MenuItemTemplate" DataType="x:Type MonMenuItem">
<Grid>
<local:MonUserControl Text="{Binding Path=TextProperty}" />
</Grid>
</DataTemplate>
</Window.Resources>
<Grid x:Name="mainGrid">
<ListBox ItemsSource="{Binding}" ItemTemplate="{StaticResource MenuItemTemplate}" x:Name="Liste" />
</Grid> |
enfin la class qui est chargé dans mon listbox se présente de la facon suivante :
C#
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
class MonMenuItem: DependencyObject
{
public static DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(TilMenuItem));
public MonMenuItem(string inText)
{
SetValue(TextProperty, inText);
}
// Label du lien
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
}
class MonMenu: ObservableCollection<MonMenuItem>
{
public MonMenu() { }
} |
Seulement voila, j'ai l'erreur suivante au chargement des données dans la ListBox
Citation:
Impossible de définir « Binding » sur la propriété « Text » de type « MonUserControl ». Un « Binding » peut uniquement être défini sur un DependencyProperty d’un DependencyObject.
Comment définir MonUserControl pour qu'il puisse accepter le Binding ?
merci d'avance pour votre aide