Установка флажков в TreeView с использованием кода позади, а не xaml - PullRequest
0 голосов
/ 16 февраля 2009

Я создал (System.Windows.Controls.Primitives.) Всплывающее окно, которое содержит древовидное представление, которое я заполняю данными, считанными из файла. Всплывающее окно создается в коде, а не в xaml. Я хочу добавить флажки в древовидную структуру аналогично CheckedTreeViewItemSample.xaml, который входит в набор инструментов Silverlight.

У меня проблемы с преобразованием xaml в код, потому что я не совсем понимаю, как работает HierarchicalDataTemplate и как работают привязки. На самом деле, я нахожу объектную модель Silverlight довольно запутанной!

Я довольно много искал, но не нашел, как это сделать в коде. Нужно ли мне определить xaml и использовать XamlReader?

Заранее спасибо ...

Ответы [ 2 ]

1 голос
/ 18 февраля 2009

Вам нужно поместить элементы управления в свойство заголовка добавляемых вами древовидных элементов:

        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 и никогда не возвращаться к выполнению этого в коде. Также гораздо проще, если вы обернете элемент управления, который собираетесь использовать в заголовке в качестве пользовательского элемента управления. И затем вы можете превратить этот пользовательский элемент управления в другой файл (конечно, на основе xaml)

0 голосов
/ 20 апреля 2009

Это вызывает ошибку на моем компьютере. Единственное, что я могу поместить в заголовок без исключения из кода, это текст.

(я считаю, что это связано с http://silverlight.codeplex.com/WorkItem/View.aspx?WorkItemId=2597)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...