Itemscontrol Изменить шаблон управления - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу изменить шаблон itemscontrol, чтобы изменить не то, как выглядит каждый элемент, а фактическийconcontrol items

 <ItemsControl
         ItemsSource="{Binding RB}" Grid.Row="1"
         ItemTemplate="{StaticResource myBTemplate}">
         <ItemsControl.ItemsPanel>
                  <ItemsPanelTemplate>
                           <StackPanel></StackPanel>
                  </ItemsPanelTemplate>
         </ItemsControl.ItemsPanel>
 </ItemsControl>

У меня есть это, и оно отлично работает, я получаю поведение элементов стека и мой шаблон данных для каждый элемент, но я не могу найти способ изменить контейнер. Допустим, вы поместили заголовок в мой список предметов, не делая это за пределами itemscontrol. и если я устанавливаю элементы ControlTemplate, они больше не отображаются. (Этот Itemscontrol является частью DataTemplate верхнего уровня)

1 Ответ

0 голосов
/ 29 февраля 2020

После того, как Клеменс прокомментировал, я больше искал в Presenter элементов, а не в ControlTemplate.

Обнаружил, что мне просто нужно добавить средство для представления элементов где-нибудь в ControlTemplate без специального тега. просто уважая формат дерева.

<ItemsControl
  ItemsSource="{Binding RB}" Grid.Row="1"
  ItemTemplate="{StaticResource myBTemplate}">
         <ItemsControl.Template>
           <ControlTemplate TargetType="{x:Type ItemsControl}">
             <StackPanel>
              <Grid Margin="5" Height="50">
               <Ellipse Stroke="DarkBlue" StrokeThickness="2">
                  <Ellipse.Fill>
                    <RadialGradientBrush Center="0.3,0.2" RadiusX="0.5" RadiusY="0.5">
                      <GradientStop Color="Azure" Offset="0.1" />
                      <GradientStop Color="CornflowerBlue" Offset="1.1" />
                    </RadialGradientBrush>
                  </Ellipse.Fill>
               </Ellipse>
              </Grid>
               <StackPanel >
                 <ItemsPresenter Margin="2,0,0,0"/>
               </StackPanel>
             </StackPanel>
            </ControlTemplate>
           </ItemsControl.Template>
</ItemsControl>
...