2011-03-08 78 views
0

我有一个按钮点击事件这应该添加一个复选框到我的用户界面。做这件事的正确方法是什么?如何在tabitem中动态添加复选框?

我想这:

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

典型地控制不直接从代码添加后面使用WPF。通常的做法就像是建议使用MVVM,将按钮连接到ViewModel上的命令,然后连接到XML中的ViewModel。来自XML的项目将进入一个集合,可能是一个ObservableCollection。然后集合将被绑定到像ItemsControl那样的模板,该模板涉及复选框。你可以在MVVM找到更多的信息:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

在任何情况下,你都试图将Windows Forms CheckBox控件与WPF混合使用。除非你在WPF中进行特殊的WinForms托管,否则这是行不通的。您需要改为使用System.Windows.Controls.CheckBox。此外,它看起来像你试图直接添加到TabItem.Controls。 WPF TabItem没有控件属性 - 你确定你正在使用WPF控件吗?

只是出于好奇,你是否将一个WinForms应用程序移植到WPF?

+0

nope,没有从winforms移植。谢谢。 – jeremychan 2011-03-08 06:27:32