Sto lavorando su un'applicazione che mostra 20 grafico pulsanti, i controlli in un MainWindow (Button1 per Button20). Ogni pulsante di controllo in grado di visualizzare una stringa di Contenuto, e dispone di una descrizione comandi progettati, come segue :
<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>
Vorrei definire la stringa di contenuti e la stringa di descrizione comandi per ogni pulsante in un file XML in modo che questa informazione può essere cambiato modificando il file XML.
Per questo, ho creato un ViewModel definizione di un oggetto chiamato Bouton (in francese) :
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;
}
}
Durante la lettura del file XML, ho creato il 20 oggetti di Bouton tipo con le informazioni su boutonNumber, il Contenuto e la descrizione dei comandi. Quindi tutti questi Bouton oggetti vengono memorizzati in un Elenco di raccolta.
Ora voglio usare il DataBinding tra il mio Bouton elenco e i controlli grafici sul mio MainWindow per essere in grado di visualizzare il contenuto della stringa e la stringa di descrizione comandi su ogni pulsante. In MainWindow, ho usato il seguente codice :
public MainWindow()
{
InitializeComponent();
List<Bouton> lst = Utilities.CreateList();
this.DataContext = lst;
}
dove lst è un Elenco di raccolta correttamente inizializzata.
Ma non so come fare il databinding lavoro sul Pulsante controlla. Come posso fare ogni 20 controlli Pulsante correttamente il link alla corrispondente Bouton oggetto (contenuto nel Boutons collezione) ? Voglio dire, come controllo Button1 ottenere le sue corde dal mio Bouton1 oggetto, il controllo Button2 ottenere la sua stringa da Bouton2 oggetto e così via fino a quando Button20 di controllo e Bouton20 oggetto ?
Grazie per il vostro aiuto. Si prega di notare che io sono un principiante con WPF e questo è il mio primo progetto WPF con Visual Studio.