WPF UniformGrid:如何设置选定的带有圆角的Child样式,如在资源管理器中

时间:2013-10-08 14:27:51

标签: css wpf xaml styles uniformgrid

这是之前提出的问题的链接,涉及TreeView:

WPF TreeView: How to style selected items with rounded corners like in Explorer

这是另一个问题的另一个链接,它涉及一个ListView:

WPF ListView: How to style selected items with rounded corners like in Explorer

我的问题是:如何在UniformGrid上迁移此解决方案?因为我希望在我的UniformGrid单元格中具有与2个示例中所示相同的效果。

这是我的源代码示例:

<Grid VerticalAlignment="Center" HorizontalAlignment="Center" >
    <ItemsControl ItemsSource="{Binding ChildrenList}"  BorderThickness="0"  
        HorizontalContentAlignment="Center" VerticalContentAlignment="Center" >
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="{Binding NumberOfColumns}" HorizontalAlignment=
                    "Center" Background="Transparent" Margin="4,4,4,4" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
</Grid>

1 个答案:

答案 0 :(得分:1)

你已经到了中途了一段时间:)。

您需要使用ListBox而不是ItemsControl(因为ItemsControl不处理选择而且没有“选定项目”。

然后您使用与示例中相同的ItemsPanel,并使用与您链接到的ItemContainerStyle帖子相同的ListView注意:只需确保重命名内容从“ItemsControl”/“ListView”和“ListViewItem”到“ListBox”和“ListBoxItem”):

<ListBox ItemsSource="{Binding ChildrenList}" >
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="{Binding NumberOfColumns}" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <!-- NOTE: "ListBox" and "ListBoxItem": -->
    <ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}">
            ...
        </Style>
    </ListBox.ItemContainerStyle>

</ListBox>