Am de lucru pe o cerere arată 20 de grafice, butoane de control într-un MainWindow (Button1 să Button20). Fiecare buton de comandă poate afișa un Conținut șir, și are un tooltip concepute după cum urmează :
<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>
Aș dori să definim șirul de conținut și tooltip string pentru fiecare buton într-un fișier XML astfel încât această informație poate fi schimbat prin modificarea fișierului XML.
Pentru aceasta, am creat o ViewModel definirea unui obiect numit Bouton (în limba franceză) :
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;
}
}
Când citești fișierul XML, am crea 20 de obiecte de Bouton tip cu informații despre boutonNumber, Conținutul și Tooltip. Apoi, toate aceste Bouton obiecte sunt stocate într-o Listă de colectare.
Acum vreau să folosesc DataBinding între Bouton listă și grafic de controale pe MainWindow pentru a fi capabil de a afișa conținutul de coarde și tooltip șir pe fiecare buton. În MainWindow, am folosit urmatorul cod :
public MainWindow()
{
InitializeComponent();
List<Bouton> lst = Utilities.CreateList();
this.DataContext = lst;
}
în cazul în care lst este o Listă de colectare corect inițializat.
Dar nu știu cum să facă databinding munca pe Butonul de control. Cum pot face ca fiecare dintre cele 20 de controale Buton corect link-ul corespunzător Bouton obiect (conținute în Boutons de colectare) ? Adică cum poate Button1 control siruri de caractere sale din Bouton1 obiect, Button2 de control obține șirul de Bouton2 obiect și așa mai departe până Button20 de control și Bouton20 obiect ?
Vă mulțumesc pentru ajutor. Vă rugăm să rețineți că sunt un incepator cu WPF si acesta este primul meu proiect de WPF cu Visual Studio.