Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF网格水平滚动条,而不是调整列大小_Wpf_User Interface_Datagrid_Horizontal Scrolling_Datagridcolumn - Fatal编程技术网

WPF网格水平滚动条,而不是调整列大小

WPF网格水平滚动条,而不是调整列大小,wpf,user-interface,datagrid,horizontal-scrolling,datagridcolumn,Wpf,User Interface,Datagrid,Horizontal Scrolling,Datagridcolumn,我有一个有许多列的网格 在小型pc屏幕上,列会自动调整大小。我想要一个水平滚动条(不调整列的大小),而不是这个默认行为 如果我在每列上设置MinWidth属性,我就有了滚动条,但我不能再调整列的大小(空间不够)。 我也无法成功使用ScrollViewer(这损害了性能) 如何获得滚动条并调整列的大小 <Grid> <DataGrid Height="200" Width="200" HorizontalScrollBarVisibility="Visible">

我有一个有许多列的网格

在小型pc屏幕上,列会自动调整大小。我想要一个水平滚动条(不调整列的大小),而不是这个默认行为

如果我在每列上设置MinWidth属性,我就有了滚动条,但我不能再调整列的大小(空间不够)。 我也无法成功使用ScrollViewer(这损害了性能)

如何获得滚动条并调整列的大小

<Grid>
    <DataGrid Height="200" Width="200" HorizontalScrollBarVisibility="Visible">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Column 1" Binding=.../>
            <DataGridTextColumn Header="Column 2" Binding=.../>
            <DataGridTextColumn Header="Column 3" Binding=.../>
            <DataGridTextColumn Header="Column 4" Binding=.../>
           [...]
        </DataGrid.Columns>
    </DataGrid>
</Grid>

[...]

我尝试了您的代码,当数据不适合时,我得到了网格的滚动条,每列自动适合最大的文本大小,并且列可以调整大小

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            LoadData();
        }
       private void LoadData()
        {
            DataTable foo = new DataTable();
            for (int i = 0; i < 20; i++)
            {
                foo.Columns.Add(new DataColumn("column" + i, typeof(String)));
            }
            for (int i = 0; i < 20; i++)
            {
                DataRow dr = foo.NewRow();
                foreach (DataColumn dc in foo.Columns)
                {
                    if(i%5 ==0)
                    {
                        dr[dc] = string.Format("Looong and wide Data value {0} for cell.", i);
                    }
                    else
                    {
                        dr[dc] = string.Format("Data value {0} for cell.", i);
                    }
                }
                foo.Rows.Add(dr);
            }
            dataGrid.ItemsSource = foo.DefaultView;
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //cts.Cancel();
            dataGrid.EnableRowVirtualization = !dataGrid.EnableRowVirtualization;
            LoadData();
        }

    }
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button Click="Button_Click" Content="Toggle Virtualization" HorizontalAlignment="Left" Margin="59,47,0,0" VerticalAlignment="Top" Width="75"/>
        <DataGrid HorizontalAlignment="Left" x:Name="dataGrid" AutoGenerateColumns="True"
             Width="695"     Height="257" Margin="59,93,0,0" 
                  VerticalAlignment="Top" > 
        </DataGrid> 
    </Grid>
</Window>
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
LoadData();
}
私有void LoadData()
{
DataTable foo=新的DataTable();
对于(int i=0;i<20;i++)
{
Add(新数据列(“列”+i,typeof(字符串));
}
对于(int i=0;i<20;i++)
{
DataRow dr=foo.NewRow();
foreach(foo.Columns中的数据列dc)
{
如果(i%5==0)
{
dr[dc]=string.Format(“单元的长宽数据值{0}”,i);
}
其他的
{
dr[dc]=string.Format(“单元格的数据值{0}”,i);
}
}
foo.Rows.Add(dr);
}
dataGrid.ItemsSource=foo.DefaultView;
}
私有无效按钮\u单击(对象发送者,路由目标e)
{
//cts.Cancel();
dataGrid.EnableRowVirtualization=!dataGrid.EnableRowVirtualization;
LoadData();
}
}