Я работаю над приложением, в котором отображаются 20 графических элементов управления кнопками в главном окне (от кнопки 1 до кнопки 20). Каждый элемент управления кнопкой может отображать строку содержимого и имеет всплывающую подсказку, выполненную следующим образом :
<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>
Я хотел бы определить содержимое строки и строку подсказки для каждой кнопки в XML-файле, чтобы эту информацию можно было изменить, изменив XML-файл.
Для этого я создал модель представления, определяющую объект под названием Бутон (по-французски). :
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;
}
}
При чтении XML - файла я создаю 20 объектов типа Бутон с информацией о номере Бутона, Содержимом и подсказкой. Затем все эти объекты Бутона сохраняются в коллекции списков.
Теперь я хочу использовать привязку данных между моим списком Бутона и графическими элементами управления в моем главном окне, чтобы иметь возможность отображать строку содержимого и строку подсказок на каждой кнопке. В главном окне я использовал следующий код :
public MainWindow()
{
InitializeComponent();
List<Bouton> lst = Utilities.CreateList();
this.DataContext = lst;
}
где lst-это правильно инициализированная коллекция списков.
Но я не знаю, как заставить привязку данных работать с элементами управления кнопками. Как я могу правильно связать каждый из 20 элементов управления кнопками с соответствующим объектом Бутона (содержащимся в коллекции Бутонов) ? Я имею в виду, как элемент управления Button1 может получить свои строки из моего объекта Bouton1, элемент управления Button2 может получить свою строку из объекта Bouton2 и так далее, пока элемент управления Button20 и объект Bouton20 не появятся ?
Спасибо вам за вашу помощь. Пожалуйста, обратите внимание, что я новичок в WPF, и это мой первый проект WPF с Visual Studio.