如何创建通过读取wpf中的xml文件动态创建的按钮的点击事件?
How to create the click event of a button which is dynamically created by reading the xml file in wpf?
我是 wpf 的新手,我正在 wpf 上做一些 poc controls.I 通过读取我的 xml 文件动态创建了按钮,并将按钮放在 stackpanel.i 想通过点击它来编写按钮的点击事件,我写了一个点击事件,它给出了堆栈面板内的所有按钮名称,但我想要的是我想在我点击时获得相应的按钮名称。
我的 XML 文件:
<root>
<Project Name="FundsCrossReferences" Label ="SMA Model Management" LibraryName="SMAMC" ClassName="" Roles="">
</Project>
<Project Name="SMAFI" Label ="SMAFI" LibraryName="SMAFI" ClassName="" Roles="">
</Project>
</root>
我的window.xaml.cs文件
private void windowloaded()
{
StringBuilder result = new StringBuilder();
foreach (XElement level1Element in XElement.Load(@"C:\Users\Trial\XMLFile.xml").Elements("Project"))
{
result.AppendLine(level1Element.Attribute("Name").Value+"/");
}
List<string> addnames = new List<string>();
string[] stringArray = result.ToString().Split('/').ToArray();
stringArray = stringArray.Take(stringArray.Count() - 1).ToArray();
foreach (var arrayname in stringArray)
{
var names = arrayname.Replace("\r\n", "");
addnames.Add(names);
}
List<string> list = addnames.ToList();
foreach(var buttoname in list)
{
var newButton = new Button() { Name= buttoname,Height=39,Foreground=Brushes.Black,Content=buttoname};
this.mainpanel.Children.Add(newButton);
}
}
我的Window.xaml:
<StackPanel x:Name="mainpanel"></StackPanel>
请帮助我解决按钮的单击事件或在堆栈面板中单击的按钮的名称。
只需在 foreach
循环中连接一个点击事件处理程序:
newButton.Click += Your_Handler;
我是 wpf 的新手,我正在 wpf 上做一些 poc controls.I 通过读取我的 xml 文件动态创建了按钮,并将按钮放在 stackpanel.i 想通过点击它来编写按钮的点击事件,我写了一个点击事件,它给出了堆栈面板内的所有按钮名称,但我想要的是我想在我点击时获得相应的按钮名称。
我的 XML 文件:
<root>
<Project Name="FundsCrossReferences" Label ="SMA Model Management" LibraryName="SMAMC" ClassName="" Roles="">
</Project>
<Project Name="SMAFI" Label ="SMAFI" LibraryName="SMAFI" ClassName="" Roles="">
</Project>
</root>
我的window.xaml.cs文件
private void windowloaded()
{
StringBuilder result = new StringBuilder();
foreach (XElement level1Element in XElement.Load(@"C:\Users\Trial\XMLFile.xml").Elements("Project"))
{
result.AppendLine(level1Element.Attribute("Name").Value+"/");
}
List<string> addnames = new List<string>();
string[] stringArray = result.ToString().Split('/').ToArray();
stringArray = stringArray.Take(stringArray.Count() - 1).ToArray();
foreach (var arrayname in stringArray)
{
var names = arrayname.Replace("\r\n", "");
addnames.Add(names);
}
List<string> list = addnames.ToList();
foreach(var buttoname in list)
{
var newButton = new Button() { Name= buttoname,Height=39,Foreground=Brushes.Black,Content=buttoname};
this.mainpanel.Children.Add(newButton);
}
}
我的Window.xaml:
<StackPanel x:Name="mainpanel"></StackPanel>
请帮助我解决按钮的单击事件或在堆栈面板中单击的按钮的名称。
只需在 foreach
循环中连接一个点击事件处理程序:
newButton.Click += Your_Handler;