2009-07-16 3 views
0

Не могли бы вы мне помочь? Мне нужен TreeView с CheckBox для каждого элемента. Я не могу понять, что я начал так, и мне кажется совершенно неправильным:WPF TreeView с пользовательским стилем

<TreeView Grid.Row="0" Grid.Column="0" Name="StagesTreeView" Margin="5"> 
     <TreeView.Resources> 
      <Style TargetType="{x:Type TreeViewItem}"> 
       <!-- <Setter Property="?????"> WHAT SHOULD BE HERE? 
        <Setter.Value> 

        </Setter.Value> 
       </Setter> --> 
      </Style> 
     </TreeView.Resources> 
    </TreeView> 

Показать мне пл. некоторые простой пример

UPD: О ... Я думаю, что мне нужно ControlTemplate, но я до сих пор не знаю, как сделать это

UPD2: Гоша, как много я углубляясь в это я получаю недоумением. Должен ли я использовать расширение разметки RelativeSource где-то здесь? Кто-нибудь Помогите мне!

UPD3: теперь это не работает, как TreeBox. Я не могу развернуть \ свернуть элементы, хотя я немного продвинулся вперед - я могу видеть флажки.

 <TreeView Grid.Row="0" Grid.Column="0" Name="StagesTreeView" Margin="5"> 
     <TreeView.Resources> 
      <Style x:Key="{x:Type TreeViewItem}" TargetType="TreeViewItem"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate> 
          <Grid Margin="2"> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="Auto"/> 
            <RowDefinition Height="*"/> 
           </Grid.RowDefinitions> 
           <StackPanel Grid.Row="0" Orientation="Horizontal"> 
            <CheckBox IsChecked="{Binding Path=IsActive}"/> 
            <TextBlock Text="{Binding Path=Alias.UserName}"/> 
           </StackPanel> 
           <ItemsPresenter Grid.Row="1"/> 
          </Grid> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 

     </TreeView.Resources> 
    </TreeView> 

ответ

3

Что-то вроде этого:

<TreeView Grid.Row="0" Grid.Column="0" Name="StagesTreeView" Margin="5"> 
    <TreeView.Resources> 
     <Style TargetType="TreeViewItem"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="TreeViewItem"> 
         <StackPanel Orientation="Horizontal"> 
          <CheckBox Margin="2" Name="checkBox1"/> 
          <Border Padding="2"> 
           <ContentPresenter Name="PART_header" ContentSource="Header"/> 
          </Border> 
         </StackPanel> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TreeView.Resources> 
</TreeView> 
+0

Что такое ContentPresenter? Я все еще не получаю ... – Agzam

+0

ContentPresenter - это элемент Framework, который представляет собой заполнитель для представления фактических данных TreeViewItem (и многих других элементов управления). Все остальные элементы управления, которые являются частью шаблона, созданы для создания визуальной среды для скриптов, таких как границы, сетки и т. Д., Но ContentPresenter - это место, где фактический элемент данных будет отображаться, когда TreeViewItem пытается его отобразить. –

2

Вы могли бы найти это полезным: Working with Checkboxes in the WPF TreeView

+0

Выглядит как идеально подходит для меня. Подожди, я собираюсь изучить это. Спасибо! – Agzam

+0

Я не могу разобраться. Какой я паршивый программист. Эти вещи WPF сложны и слишком запутаны для меня прямо сейчас. – Agzam

Смежные вопросы