【发布时间】:2022-01-01 05:29:01
【问题描述】:
我正在开发一个在 MainWindow(Button1 到 Button20)中显示 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 文件来更改此信息。
为此,我创建了一个 ViewModel,定义了一个名为 Bouton(法语)的对象:
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 个 Bouton 类型的对象,其中包含有关 boutonNumber、Content 和 Tooltip 的信息。然后将所有这些 Bouton 对象存储到一个 List 集合中。
现在我想在我的 Bouton 列表和 MainWindow 上的图形控件之间使用 DataBinding,以便能够在每个按钮上显示内容字符串和工具提示字符串。 在 MainWindow 中,我使用了以下代码:
public MainWindow()
{
InitializeComponent();
List<Bouton> lst = Utilities.CreateList();
this.DataContext = lst;
}
其中 lst 是一个正确初始化的 List 集合。
但我不知道如何在 Button 控件上进行数据绑定。如何使 20 个 Button 控件中的每一个都正确链接到相应的 Bouton 对象(包含在 Boutons 集合中)?我的意思是 Button1 控件如何从我的 Bouton1 对象获取其字符串,Button2 控件如何从 Bouton2 对象获取其字符串,依此类推,直到 Button20 控件和 Bouton20 对象?
感谢您的帮助。请注意,我是 WPF 的初学者,这是我使用 Visual Studio 进行的第一个 WPF 项目。
【问题讨论】: