powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF: Combobox в TreeView
4 сообщений из 4, страница 1 из 1
WPF: Combobox в TreeView
    #35883508
Лев С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Я newbie в WPF, поэтому, пожалуйста, не забрасывайте камнями за глупые вопросы :-).
Подскажите, как сделать так, чтобы при выборе какого-либо TreeviewItem-а, рядом с ним появлялся combobox.

Заранее благодарствую!
...
Рейтинг: 0 / 0
WPF: Combobox в TreeView
    #35883542
Codenamed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот ComboBox должен быть определен внутри TreeViewItem - например для выделенного TreeViewItem'а можно определить дополнительный template, содержащий ComboBox.

Иначе это уже извращение :)
Код: plaintext
Step softly, but carry a big gun
...
Рейтинг: 0 / 0
WPF: Combobox в TreeView
    #35883614
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C шаблонами будет дублирование.Лучше через IsCollapsed.Посмотри пример на codeproject.Отличный ресурс с вопросами и ответами по программированию и WPF - stackoverflow.com.Там тоже было подобное решение
...
Рейтинг: 0 / 0
WPF: Combobox в TreeView
    #35904387
Лев С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за советы!
Я тут уже несколько дней пытаюсь сделать так, чтобы оный combobox показывался только рядом с selected TreeviewItem-ом (параллельно привязал дерево к XML файлу).

Типа данные :-):

<?xml version="1.0" encoding="utf-8" ?>
<Root Name="Root">
<Node Name="AAA">
<ChildNode Name="aaa 1"/>
<ChildNode Name="aaa 2"/>
<ChildNode Name="aaa 3"/>
</Node>
<Node Name="BBB">
<ChildNode Name="bbb 1"/>
<ChildNode Name="bbb 2"/>
</Node>
</Root>


Типа код:

<Window.Resources>

<HierarchicalDataTemplate DataType="Node" ItemsSource="{Binding XPath=*}" x:Key="normal">
<TextBlock Text="{Binding XPath=@Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="Node" ItemsSource="{Binding XPath=*}" x:Key="selected">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding XPath=@Name}"/>
<ComboBox>
<ComboBoxItem IsSelected="True">111</ComboBoxItem>
<ComboBoxItem>222</ComboBoxItem>
<ComboBoxItem>333</ComboBoxItem>
</ComboBox>
</StackPanel>
</HierarchicalDataTemplate>

<DataTemplate x:Key="normal1" DataType="ChildNode">
<TextBlock Text="{Binding XPath=@Name}"/>
</DataTemplate>
<DataTemplate x:Key="selected1" DataType="ChildNode">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding XPath=@Name}"/>
<ComboBox>
<ComboBoxItem IsSelected="True">111</ComboBoxItem>
<ComboBoxItem>222</ComboBoxItem>
<ComboBoxItem>333</ComboBoxItem>
</ComboBox>
</StackPanel>
</DataTemplate>

<Style TargetType="{x:Type TreeViewItem}" x:Key="ContainerStyle">
<Setter Property="HeaderTemplate" Value="{StaticResource normal}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="HeaderTemplate" Value="{StaticResource selected}" />
</Trigger>
</Style.Triggers>
</Style>

<XmlDataProvider x:Key="XmlNodeList" Source="XMLFile1.xml"/>

</Window.Resources>

<Grid>
<TreeView ItemContainerStyle="{StaticResource ContainerStyle}">
<TreeViewItem Header="{Binding Source={StaticResource XmlNodeList}, XPath=/Root/@Name}"
ItemsSource="{Binding Source={StaticResource XmlNodeList}, XPath=/Root/Node}" />
</TreeView>
</Grid>

Этот код проходит компиляцию, но падает в run time - грит Item has already been added. Key in dictionary: 'DataTemplateKey(Node)' Key being added: 'DataTemplateKey(Node)'
Может оно и понятно почему, но делать то что?
Подскажите убогому, что делать то.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF: Combobox в TreeView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]