Estoy trabajando en una aplicación que muestra 20 gráfico botones de los controles de una ventana principal (Button1 para Button20). Cada uno de los botones de control puede mostrar una cadena de Contenido, y tiene descripción diseñado como sigue :
<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>
Me gustaría definir la cadena de contenido y la descripción de la cadena para cada botón en un archivo XML por lo que esta información puede cambiar modificando el archivo XML.
Para esto, he creado un ViewModel la definición de un objeto llamado Bouton (en francés) :
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;
}
}
Al leer el archivo XML, puedo crear 20 objetos de Bouton tipo con la información acerca de boutonNumber, el Contenido y la información sobre herramientas. A continuación, todos estos Bouton objetos se almacenan en una Lista de la colección.
Ahora quiero utilizar el Enlace de datos entre mi Bouton lista y de los controles gráficos en mi MainWindow a ser capaz de mostrar el contenido de la cadena y la cadena de información sobre herramientas en cada botón. En la ventana principal, he utilizado el siguiente código :
public MainWindow()
{
InitializeComponent();
List<Bouton> lst = Utilities.CreateList();
this.DataContext = lst;
}
donde lst es una colección de listas inicializado correctamente.
Pero no sé cómo hacer que el enlace de datos de trabajo en los controles de Botón. ¿Cómo puedo hacer que cada uno de los 20 controles de Botón correctamente enlace a la correspondiente Bouton objeto (contenida en el Boutons de la colección) ? Me refiero a ¿cómo puede el control Button1 obtener sus cuerdas de mi Bouton1 objeto, Button2 de control de obtener su cadena de Bouton2 objeto y así sucesivamente hasta que Button20 de control y Bouton20 objeto ?
Gracias por su ayuda. Tenga en cuenta que yo soy un principiante con WPF y este es mi primer proyecto de WPF con Visual Studio.