如何在tabitem中动态添加复选框?

时间:2011-03-08 05:17:40

标签: wpf dynamic

我有一个按钮点击事件,这应该为我的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>

1 个答案:

答案 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?