Eu estou trabalhando em um aplicativo mostrando 20 gráfico botões de controles em um MainWindow (Button1 para Button20). Cada botão de controle pode exibir uma cadeia de caracteres de Conteúdo, e tem uma dica de ferramenta concebida como a seguir :
<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>
Eu gostaria de definir o conteúdo de seqüência de caracteres e a cadeia de descrição para cada botão em um arquivo XML, de modo que esta informação pode ser alterada modificando o arquivo XML.
Para isso, criou uma ViewModel de definir um objeto chamado Bouton (em 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;
}
}
Durante a leitura do arquivo XML, criar objectos de 20 de Bouton tipo com as informações sobre boutonNumber, o Conteúdo e a Dica de ferramenta. Em seguida, todos estes Bouton objetos são armazenados em uma coleção de Lista.
Agora eu quero usar ligação de dados entre o meu Bouton lista e os controles de gráficos no meu MainWindow para ser capaz de exibir o conteúdo de cadeia e a cadeia de descrição em cada botão. No MainWindow, eu usei o seguinte código :
public MainWindow()
{
InitializeComponent();
List<Bouton> lst = Utilities.CreateList();
this.DataContext = lst;
}
onde lst é uma coleção de Lista inicializado corretamente.
Mas eu não sei como fazer a ligação de dados funciona no os controles de Botão. Como posso fazer para que cada um dos 20 controles de Botão de ligar correctamente para o correspondente Bouton (objeto contido no Boutons coleção) ? Quero dizer, como pode controlo Button1 obter suas cordas do meu Bouton1 objeto, o controle Button2 obter a sua cadeia de Bouton2 objeto e assim por diante, até Button20 de controle e Bouton20 objeto ?
Obrigado por sua ajuda. Por favor, note que eu sou um novato com WPF e este é o meu primeiro projeto do WPF com o Visual Studio.