DataTemplate vs ItemContainerStyle - PullRequest
       39

DataTemplate vs ItemContainerStyle

7 голосов
/ 12 мая 2011

Я видел несколько других вопросов Silverlight против, но не смог найти ни одного для этого конкретного матча.

Я пытаюсь определить способ отображения моих объектов, связанных с ListBox. Я определил DataTemplate, но я действительно не уверен, где это должно закончиться, и ItemContainerStyle должно начаться.

Вопрос 1: Является ли ItemContainerStyle просто оболочкой для DataTemplate, чтобы общий стиль элемента можно было применять к разным макетам данных?

Вопрос 1a: Если это так, если общий стиль элемента не требуется, является ли ItemContainerStyle необходимым или все макеты и стили могут быть определены в DataTemplate?

Вопрос 1b: Если нет, Так что же это?

ListBox в настоящее время выглядит так:

<ListBox Margin="40,118,41,61" ItemTemplate="{StaticResource TaskDataTemplate}"/>

XAML для моего DataTemplate выглядит так:

<DataTemplate x:Key="TaskDataTemplate">
        <Grid d:DesignHeight="95" Height="150">
            <StackPanel Margin="11,8,-10,68" Orientation="Horizontal" d:LayoutOverrides="Width">
                <TextBlock x:Name="TaskLabel" Margin="0,0,0,8" Style="{StaticResource TitleTextSmall}" TextWrapping="Wrap" Text="Task" VerticalAlignment="Stretch" d:LayoutOverrides="Height"/>
                <TextBlock x:Name="TaskID" HorizontalAlignment="Right" Margin="10,0,0,0" Style="{StaticResource TitleTextSmall}" TextWrapping="Wrap" Text="TaskID" VerticalAlignment="Stretch" d:LayoutOverrides="Height"/>
                <TextBlock x:Name="ChangeList" Style="{StaticResource NormalText}" TextWrapping="Wrap" Text="Changes..." Margin="30,2,0,0"/>
            </StackPanel>
            <ComboBox x:Name="TaskType" Style="{StaticResource TaskComboBox}" Height="29" VerticalAlignment="Top" Margin="131,30,16,0" d:LayoutOverrides="VerticalAlignment"/>
            <TextBlock x:Name="TaskTypeLabel" Margin="12,39,0,0" Style="{StaticResource NormalTextBold}" TextWrapping="Wrap" Text="Variation Reason" VerticalAlignment="Top" HorizontalAlignment="Left" Height="21"/>
            <TextBox x:Name="TaskDescription" Margin="12,70,15,11" TextWrapping="Wrap" Text="Enter description..." Style="{StaticResource TaskTextBox}" d:LayoutOverrides="VerticalAlignment"/>
        </Grid>
    </DataTemplate>

Спасибо.

1 Ответ

6 голосов
/ 12 мая 2011

Ответ 1: да

Ответ 1a: насколько я могу судить, вы можете сделать все ваши стили в ItemTemplate, но ItemContainerStyle имеет VisualStates, которые управляют непрозрачностью при наведении мыши / отключении / выборе и т. Д.

Если вы хотите изменить эти изменения состояния непрозрачности или если вам нужна какая-либо форма Контейнера, кроме прямоугольника, например, например, треугольника, вам придется переопределить ItemContainerStyle по умолчанию.

...