我有一个按钮点击事件,这应该为我的UI添加一个复选框。这样做的正确方法是什么?
我试过这个:
private void xmlparsingButton_Click(object sender, RoutedEventArgs e)
{
XDocument xmlDoc = XDocument.Load(@"C:\Build.xml");
var abc = from target in xmlDoc.Descendants("target")
select (string)target.Attribute("if");
foreach(string target in abc)
{
if (!Dictionarycheck.ContainsKey(target))
{
System.Windows.Forms.CheckBox chk = new System.Windows.Forms.CheckBox();
chk.Text = target;
Tabitem5.Controls.Add(chk);
}
}
}
但它似乎不起作用。当我输入Tabitem5.Controls时,intellisense不会给我控件选项。
我的xaml结构是这样的:
<Window ...>
<TabControl..>
<TabItem Name="Tabitem1">
<Grid>
</Grid>
</TabItem>
<TabItem Name="Tabitem5">
<Grid>
</Grid>
</TabItem>
</TabControl>
</Window>
答案 0 :(得分:0)
通常,使用WPF不会直接从代码中添加控件。完成像你提议使用MVVM这样的事情的通常方法是将按钮连接到ViewModel上的Command,然后连接到XML中的ViewModel加载。 XML中的项目将进入集合,可能是ObservableCollection。然后,该集合将绑定到类似ItemsControl的东西,该ProjectControl具有涉及复选框的模板。您可以在http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
找到有关MVVM的更多信息无论如何,您正在尝试将Windows窗体CheckBox控件与WPF混合使用。除非你在WPF内部进行特殊的WinForms托管,否则这不会起作用。你会想要System.Windows.Controls.CheckBox。此外,您似乎正在尝试直接添加到TabItem.Controls。 WPF TabItem没有Controls属性 - 你确定你正在使用WPF控件吗?
出于好奇,您是否将WinForms应用程序移植到WPF?