2015-06-12 4 views
-1

У меня есть окно списка, пользователь может сгруппировать любое количество элементов. Я хочу показать красный прямоугольник вокруг сгруппированных элементов. Я пробовал использовать украшатели, но кажется, что adorner можно рисовать на одном элементе управления. способ достижения этого, может быть только в xaml.Группировка прямоугольника для списка

<ListBox ItemsSource="{Binding MyList, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate> 
          <Border Height="50" Width="100" Background="Yellow"> 
           <TextBlock Text="{Binding item}"/> 
          </Border> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ListBox.ItemContainerStyle> 
    </ListBox> 
+0

Вам необходимо применить 'Adorner' к' ListBox' вместо 'ListBoxItem''. – Sheridan

+0

, если вы используете 'Grouping', вы можете просто использовать стиль для' GroupItem'. – XAMlMAX

ответ

0

Как предлагалось XAMIMAX. Вам нужно написать стиль для GroupItem. См. Ниже код.

<ListBox.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.ContainerStyle> 
        <Style TargetType="{x:Type GroupItem}"> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="{x:Type GroupItem}"> 
            <Border BorderBrush="Red" BorderThickness="2" > 
             <StackPanel> 
              <ContentPresenter/> 
              <ItemsPresenter /> 
             </StackPanel> 

            </Border> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
       </GroupStyle.ContainerStyle> 
      </GroupStyle> 
     </ListBox.GroupStyle> 
Смежные вопросы