Já jsem pracoval na aplikace ukazuje 20 grafických tlačítek ovládací prvky v MainWindow (Button1 Button20). Každé ovládací tlačítko lze zobrazit Obsah řetězec, a má tooltip navržen následovně :
<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>
Chtěl bych definovat řetězec obsahu a popisku řetězec pro každé tlačítko v souboru XML, takže tyto informace lze změnit úpravou souboru XML.
Pro to, vytvořil jsem ViewModel definování objektu tzv. Bouton (ve francouzštině) :
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;
}
}
Při čtení XML souboru, vytvořit 20 objektů Bouton type s informacemi o boutonNumber, Obsah a Popis. Pak všechny tyto Bouton objekty jsou uloženy do Seznamu kolekce.
Teď chci využít DataBinding mezi mé Bouton seznam a grafické ovládací prvky na můj MainWindow být schopen zobrazit obsah řetězec a řetězec popisku na každé tlačítko. V MainWindow, jsem použil následující kód :
public MainWindow()
{
InitializeComponent();
List<Bouton> lst = Utilities.CreateList();
this.DataContext = lst;
}
kde lst je Seznam sbírku správně inicializován.
Ale já nevím, jak udělat databinding práci na ovládací Tlačítka. Jak mohu udělat každý z 20 ovládací Tlačítka správně odkaz na odpovídající Bouton objekt (obsažené v Boutons kolekce) ? Chci říct, jak může ovládací prvek Button1 dostat své nitky z mého Bouton1 objekt, Button2 kontrolu získat jeho řetězec z Bouton2 objektu a tak dále, dokud Button20 kontrolu a Bouton20 objekt ?
Děkujeme vám za vaši pomoc. Vezměte prosím na vědomí, že jsem začátečník s WPF a tohle je můj první WPF projektu s Visual Studio.