如何在WPF中的ListBox上添加标签?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在WPF中的ListBox上添加标签?相关的知识,希望对你有一定的参考价值。

我目前在ListBox(代表一个精彩的Diaballik游戏)中有一个DockPanel,最后我希望能够在图片框中显示一个标签胜利!

enter image description here

<DockPanel>
    <ListBox DockPanel.Dock="Top" ItemsSource="{Binding Cases}"  SelectedItem="{Binding SelectedCase, Mode=TwoWay}" HorizontalAlignment="Center" VerticalAlignment="Top" SnapsToDevicePixels="True">

        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="{Binding Size}"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>

        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="Padding" Value="0"/>
            </Style>
        </ListBox.ItemContainerStyle>

        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid >
                    <Ellipse Fill="{Binding Color}" Width="50" Height="50" Visibility="{Binding HasPawn, Converter={StaticResource bool2visibility}}"/>                        
                    ...
                 </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

    <Label Content="VICTORY" />  <!-- How can this go over the list box ?  -->
</DockPanel>
答案

你可以做这样的事情(Grid的行为是这样的,它只会“叠加”彼此“顶部”的项目):

<DockPanel>
    <Grid DockPanel.Dock="Top">
        <ListBox ItemsSource="{Binding Cases}" SelectedItem="{Binding SelectedCase, Mode=TwoWay}" HorizontalAlignment="Center" VerticalAlignment="Top" SnapsToDevicePixels="True">

            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="{Binding Size}"/>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>

            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="Padding" Value="0"/>
                </Style>
            </ListBox.ItemContainerStyle>

            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid >
                        <Ellipse Fill="{Binding Color}" Width="50" Height="50" Visibility="{Binding HasPawn, Converter={StaticResource bool2visibility}}"/>                        
                        ...
                     </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

        <Label Content="VICTORY" HorizontalAlignment="Center" VerticalAlignment="Center" />  <!-- How can this go over the list box ?  -->
    </Grid>
</DockPanel>

以上是关于如何在WPF中的ListBox上添加标签?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WPF 中的 ListBox 中删除边框?

如何在wpf用listbox中添加右键菜单

从代码隐藏(C#、WPF)添加时,用户控件无法在 ListBox 中正确显示

WPF中如何把listBox选中的对象绑定在图片的Source上

WPF中ListBox滚动时的缓动效果

wpf中如何绑定到listbox中的选定项