Шаблон элемента в ItemPresenter - PullRequest
0 голосов
/ 08 октября 2010

В этом шаблоне ItemPresenter просто определяет хост-панель для Предметов. Можно ли определить ItemTemplate?

<ControlTemplate x:Key="ItemsControlTemplate" TargetType="ItemsControl">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <ScrollViewer>
            <ItemsPresenter Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"/>
        </ScrollViewer>
    </Grid>
</ControlTemplate>

Чтобы продолжить, я создал класс:

public class ItemsControlExtended : ItemsControl
{
    public ItemsControlExtended()
    {
        DefaultStyleKey = typeof(ItemsControlExtended);
    }
}

И я хотел бы создать свойство зависимостей "ItemsMargin". После того, как я это сделал, я должен связать свойство Item «Margin» с «ItemsMargin». Как можно было бы реализовать?

GetContainerForItemOverride? PrepareContainerForItemOverride? OnApplyTemplate?

1 Ответ

1 голос
/ 08 октября 2010

Вы не можете определить ItemTemplate с помощью ControlTemplate для элемента управления в целом.

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

 <Style x:Key="ItemsControlStyle" TargetType="ItemsControl>
   <Setter Property="Template">
      <Setter.Value>
          <ControlTemplate TargetType="ItemsControl">
              <!-- your template as above -->
          </ControlTemplate>
      </Setter.Value>
   </Setter>

   <Setter Property="ItemsPanel">
      <Setter.Value>
          <ItemsPanelTemplate>
              <!-- An alternative to StackPanel if so desired -->
          </ItemsPanelTemplate>
      </Setter.Value>
   </Setter>


   <Setter Property="ItemTemplate">
      <Setter.Value>
          <DatalTemplate>
              <!-- The item template you wanted -->
          </DataTemplate>
      </Setter.Value>
   </Setter>

</Style>

Теперь вы можете стилизовать ItemsControl: -

<ItemsControl Style="{StaticResource ItemsControlStyle}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...