使用代码隐藏而不是xaml将复选框放在TreeView中

时间:2009-02-16 16:09:51

标签: silverlight

我创建了一个(System.Windows.Controls.Primitives。)弹出窗口,其中包含一个Treeview,我正在填充从文件读入的数据。 Popup是在代码而不是在xaml中创建的。我想以类似于Silverlight Toolkit中的CheckedTreeViewItemSample.xaml的方式向树视图添加复选框。

我无法将xaml转换为代码,因为我真的不了解HierarchicalDataTemplate的工作原理以及绑定的工作原理。事实上,我发现Silverlight对象模型非常混乱!

我已经做了很多搜索,但我还没有找到如何在代码隐藏中做到这一点。我是否需要定义xaml并使用XamlReader?

提前致谢...

2 个答案:

答案 0 :(得分:1)

您需要将控件放入要添加的treeviewitems的header属性中:

        var myTreeViewItem = new TreeViewItem();
        var myContentHolder = new StackPanel();
        var myCheckBox = new CheckBox();
        TextBlock myTextBlock = new TextBlock();
        myTextBlock.Text = "blah";
        //add more controls
        myContentHolder.Children.Add(myCheckBox);
        myContentHolder.Children.Add(myTextBlock);
        myTreeViewItem.Header = myContentHolder;

瞧。说实话,你第一次使用Silverlight时会这样做,然后尝试使用xaml,并且永远不要回到代码中。如果你将你要在头文件中使用的控件包装为usercontrol,也会更容易。然后,您可以将该自定义控件转换为另一个文件(当然,基于xaml;)

答案 1 :(得分:0)

这会在我的电脑上引发错误。我唯一可以放入标题但没有代码隐藏的例外是文本。

(我相信它与此http://silverlight.codeplex.com/WorkItem/View.aspx?WorkItemId=2597相关)