c# - 在网格中显示列表框

标签 c# wpf listbox grid stackpanel

这可能是一个愚蠢的问题,但我坚持这样做 :(。我有一个网格和 3 列。我在这 3 列的每一列中都有一个文本框和一个列表框,如图所示:

<Grid.ColumnDefinitions>
                <ColumnDefinition Width="130"></ColumnDefinition>
                <ColumnDefinition Width="380"></ColumnDefinition>
                <ColumnDefinition Width="146"></ColumnDefinition>
             </Grid.ColumnDefinitions>

            <Grid.RowDefinitions>
                <RowDefinition Height="30"></RowDefinition>
            </Grid.RowDefinitions>
            <StackPanel Grid.Column="0" Grid.Row="0">
                <TextBox Text="File Name" Height="30"></TextBox>
            </StackPanel>
            <StackPanel Grid.Column="1" Grid.Row="0">
                <TextBox Text="File Path" Height="30"></TextBox>
            </StackPanel>
            <StackPanel Grid.Column="2" Grid.Row="0">
                <TextBox Text="File Size" Height="30"></TextBox>
            </StackPanel>

            <StackPanel Grid.Column="0">
                <ListBox Name="listbox_name" Margin="1,30" Height="276" />
             </StackPanel>
            <StackPanel Grid.Column="1">
                <ListBox Name="listbox_path" Margin="1,30" Height="276" />
            </StackPanel>
            <StackPanel Grid.Column="2">
                <ListBox Name="listbox_size" Margin="1,30" Height="276" />
            </StackPanel>

及其背后的代码:

public Window1()
        {
        InitializeComponent();

        list.Add("D:\\a\\hy");
        list.Add("D:\\a\\hy1");
        list.Sort();           
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        listbox_name.ItemsSource = list;
        grid1.Visibility = Visibility.Hidden;
    }


    private void button1_Click(object sender, RoutedEventArgs e)
    {
        grid1.Visibility = Visibility.Visible;
    }

但是在单击按钮时,我无法看到显示列表的列表框。请指导我哪里出错了。谢谢!

最佳答案

原因是你的stackPanelGrid.Col="0"里面,而且很小。但是 ListBox 位于您的 stackPanel 中。它有一定的余量,并且会下降。您是否看不到您的 listBox


enter image description here
如果你会做这样的事情:

<StackPanel Margin="0,0,0,-279">
            <ListBox Name="listbox_name" Margin="1,30" Height="276" />
        </StackPanel>

您将看到您的列表框,它会起作用。
注意:此代码只是示例。你需要为你的窗口做一个更好的布局。



这是我制作窗口布局的方法:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="678" Loaded="Window_Loaded">
    <Grid Name="grid1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="130"></ColumnDefinition>
            <ColumnDefinition Width="380"></ColumnDefinition>
            <ColumnDefinition Width="146"></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="30"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>

        <TextBlock Text="File Name"  Grid.Row="0" Grid.Column="0" Margin="5" />
        <TextBlock Text="File Path"  Grid.Row="0" Grid.Column="1" Margin="5" />
        <TextBlock Text="File Size" Grid.Row="0" Grid.Column="2" Margin="5" />

        <ListBox Name="listbox_name" Grid.Row="1" Grid.Column="0" BorderBrush="Black" />
        <ListBox Name="listbox_path" Grid.Row="1" Grid.Column="1" BorderBrush="Black" />
        <ListBox Name="listbox_size" Grid.Row="1" Grid.Column="2" BorderBrush="Black" />
    </Grid>
</Window>

enter image description here

关于c# - 在网格中显示列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7783059/

相关文章:

c# - 在 Oxyplot 的线系列数据点中添加字符串值

c# - 如何在 try catch 语句中包装 MVVM Light ViewModel?

c# WPF 更改 CheckBox 的复选颜色

c# - Wpf 鼠标事件超出用户控件问题的范围

windows-phone-7 - 如何在windows phone中显示一长串数据?

c# - 实体中的 NHibernate 辅助属性

c# - 如何使用 lambda 指定构造函数参数?

.net - Silverlight 5 列表框大小调整

c# - 为什么 WhereSelectArrayIterator 不实现 ICollection?

javascript - 如何从列表框中选择多个值