Je suis en train de travailler sur une application montrant 20 graphique boutons de contrôles dans une MainWindow (Button1 pour Button20). Chaque bouton de contrôle peut afficher une chaîne de Contenu, et a une info-bulle conçu comme suit :
<Button x:Name="button1" FontWeight="Bold" FontSize="15" Content="" HorizontalAlignment="Left" Margin="20,69,0,0" VerticalAlignment="Top" Width="92" Height="29" Click="Button_Click" Background="#FFFFFFFF" MouseEnter="button_MouseEnter">
<Button.ToolTip>
<Border Margin="-4,0,-4,-3" Padding="10" Background="Yellow">
<Border.BitmapEffect>
<OuterGlowBitmapEffect></OuterGlowBitmapEffect>
</Border.BitmapEffect>
<Label x:Name ="lbl1" FontSize="20" Content="{Binding Path=ToolTip}">
</Label>
</Border>
</Button.ToolTip>
<Button.Effect>
<DropShadowEffect/>
</Button.Effect>
</Button>
Je voudrais définir la chaîne de contenu et de la chaîne d'info-bulle pour chaque bouton dans un fichier XML de sorte que cette information peut être changé en modifiant le fichier XML.
Pour cela, j'ai créé un ViewModel de la définition d'un objet appelé Bouton (en français) :
public class Bouton : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
void Notify(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
int boutonNumber;
public int BoutonNumber{ get { return boutonNumber; } set { boutonNumber= value; Notify("BoutonNumber"); } }
string texteBouton;
public string TexteBouton { get { return texteBouton; } set { texteBouton = value; Notify("TexteBouton"); } }
string tooltip;
public string Tooltip { get { return tooltip; } set { tooltip = value; Notify("ToolTip"); } }
public Bouton(int nb, string tb, string tt)
{
BoutonNumber = nb;
TexteBouton = tb;
Tooltip = tt;
}
}
Lors de la lecture du fichier XML, j'ai créer 20 objets de Bouton de type de l'information sur boutonNumber, le Contenu et l'info-bulle. Puis tous ces Bouton objets sont stockés dans une Liste de collection.
Maintenant, je veux utiliser la liaison de données entre mon Bouton de la liste et le contrôle du graphique sur mon MainWindow pour être en mesure d'afficher le contenu de la chaîne et de la chaîne d'info-bulle sur chaque bouton. Dans la MainWindow, j'ai utilisé le code suivant :
public MainWindow()
{
InitializeComponent();
List<Bouton> lst = Utilities.CreateList();
this.DataContext = lst;
}
où lst est une Liste de la collection initialisé correctement.
Mais je ne sais pas comment faire la liaison de données de travail sur les contrôles de Bouton. Comment puis-je faire de chacun des 20 contrôles de Bouton correctement lien vers le Bouton correspondant de l'objet (dans les Boutons de la collection) ? Je veux dire, comment pouvez-contrôle Button1 obtenir ses cordes de mon Bouton1 objet, le Bouton2 contrôle de sa chaîne de Bouton2 objet et ainsi de suite jusqu'à ce que Button20 de contrôle et de Bouton20 objet ?
Je vous remercie pour votre aide. Veuillez noter que je suis un débutant avec WPF et c'est mon premier projet WPF avec Visual Studio.