ListBox/ListBoxItem for BoundData Style Template Clarificati


如何

让数据绑定列表框接受列表框项的模板化样式(从与相应样式同名的资源字典中)?

我在 Blend 4 中看到,在 SimpleStyles ResourceDictionary 文件中,"SimpleListBoxItem"的属性设置为:

 d:IsControlPart="True"

但我只能在显式使用 xaml 硬编码列表框项的简单列表框项样式时使用它?

对我来说有意义的是将样式应用于列表框中的控件模板。我看到列表框中的控件模板如下所示:

ControlTemplate TargetType="{x:Type ListBox}">
                <Grid>
                    <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" 
                            BorderThickness="{TemplateBinding BorderThickness}" 
                            Background="{TemplateBinding Background}"
                            />
                    <ScrollViewer Margin="1" Style="{DynamicResource SimpleScrollViewer}" Focusable="false" Background="{TemplateBinding Background}">
                        <!-- The StackPanel is used to display the children by setting IsItemsHost to be True -->
                        <StackPanel Margin="2" IsItemsHost="true"/>
                    </ScrollViewer>
                </Grid>

有没有办法在该堆栈面板中再放置一个嵌套的"ItemsHost"样式模板?也许是数据模板?

提前感谢,如果需要进一步澄清,请告诉我!

有两个

选项可用于将样式应用于ListBox样式中的项目,ItemContainerStyleItemTemplate

1) ItemContainerStyle适用于类型 ListBoxItem -- 设置它为列表中每个项目的容器设置样式:

<Style TargetType="ListBoxItem" x:Key="SimpleListBoxItem">
    <Setter Property="Background" Value="Green">
    <!-- etc -->
</Style>
<Style TargetType="ListBox" x:Key="ListBoxStyle">
    <Setter Property="ItemContainerStyle" Value="{StaticResource SimpleListBoxItem}">
</Style>

2)ItemTemplate属性允许您完成重新定义每个项目的显示方式的模板,例如:

<Style TargetType="ListBox" x:Key="ListBoxStyle">
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="This is an item" />
                    <ContentControl Grid.Column="1" Text="{Binding}" />
                <Grid>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

相关内容

  • 没有找到相关文章

最新更新