0

在我的 WPF 桌面应用程序中,我有一个 ListBox,我想用两行和两列(即 2x2 网格)显示,在四个行/列点中的每一个点都有一个复选框 - 我的 XAML 代码如下。请注意,我不想进行任何数据绑定。下面的代码有效,但显示的是所有四个 CheckBox 都在彼此之上,即使我已经指定它们应该位于不同的行/列中。有人可以指出我做错了什么以及如何更正 XAML?我在互联网上找到的每个示例都是数据绑定示例,这需要没有数据绑定(即显式)。

<ListBox Margin="0,0,10,10" Name="myListBox" Height="139" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="112" >
    <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
        <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50"/>
            <ColumnDefinition Width="50"/>
        </Grid.ColumnDefinitions>
        </Grid>
    </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <CheckBox Content="WCF"  Grid.Row="0" Grid.Column="0"/>
    <CheckBox Content="ASP.NET"  Grid.Row="0" Grid.Column="1"/>
    <CheckBox Content="Java"  Grid.Row="1" Grid.Column="0"/>
    <CheckBox Content="C+"  Grid.Row="1" Grid.Column="1"/>
</ListBox>
4

1 回答 1

0

你在滥用ListBox. ListBox是一个ItemsControl并且您并没有真正处理绑定项目,因此您应该使用不同的控件来实现您的解决方案。像下面这样的东西应该可以工作:

<ScrollViewer Height="50"
              HorizontalAlignment="Center">
    <WrapPanel Width="150">
        <CheckBox Name="Wcf"
                  Content="WCF"
                  Width="75" />
        <CheckBox Name="Asp"
                  Content="ASP.NET"
                  Width="75" />
        <CheckBox Name="Java"
                  Content="Java"
                  Width="75" />
        <CheckBox Name="WhatIsThis"
                  Content="C+"
                  Width="75" />
        <CheckBox Content="WCF"
                  Width="75" />
        <CheckBox Content="ASP.NET"
                  Width="75" />
        <CheckBox Content="Java"
                  Width="75" />
        <CheckBox Content="C+"
                  Width="75" />
        <!-- add as many items as you want -->
    </WrapPanel>
</ScrollViewer>

如果您希望内容可滚动,则将 a 包裹ScrollViewer在您的周围WrapPanel并在其上设置高度。

证明:

在此处输入图像描述

注意:我强烈建议您尽可能使用数据绑定。

于 2015-12-11T19:25:25.290 回答