9

我已经看到了一些其他 Silverlight 'vs' 的问题,但找不到这个特定比赛的任何问题。

我正在尝试定义绑定到 a 的对象的ListBox显示方式。我已经定义了 a DataTemplate,但我真的不确定这应该在哪里结束以及ItemContainerStyle应该从哪里开始。

问题 1: 是否ItemContainerStyle只是一个包装器,DataTemplate以便可以将通用项目样式应用于不同的数据布局?

问题 1a:如果是这样,如果不需要共同的项目样式,是否ItemContainerStyle甚至需要或可以在 ? 中定义所有布局和样式DataTemplate

问题 1b:如果不是,那是什么?

目前ListBox是这样的:

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

我的 XAMLDataTemplate是这样的:

<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>

谢谢。

4

1 回答 1

10

答案1:是的

答案 1a:据我所知,您可以在 ItemTemplate 中进行所有样式设置,但 ItemContainerStyle 具有 VisualStates,可控制鼠标悬停/禁用/选择等时的不透明度。

如果您想要更改这些不透明度状态更改,或者如果您想要矩形以外的任何容器形状,例如三角形,那么您必须覆盖默认的 ItemContainerStyle。

于 2011-05-12T13:28:35.463 回答