zoukankan      html  css  js  c++  java
  • DataGrid横向滚动条无法拖动的问题

    项目中经常遇到一些问题,这些问题可能很简单,但是之前从未遇到,可能经过了一番谷歌,也可能是查阅了MSDN,或是借鉴了大牛博客,逐渐有了些眉目,为了将这些东西落地,也为了将来之不易的东西记录下来,以备今后查看,也希望能偶尔帮到一下遇到同样问题的同仁,带着这样的目的开始了我的TestProjects系列。

    这个系列就是一系列的Demo,带着明确的目的写的Demo,这些东西可能是常见用法的一个记录,也可能是一个简单的API接口,也可能是平时认识的盲区,也可能。。总之,可能对今后有帮助的,都在这里被记录。

    ************************************那么 就从这里开始吧******************************************************

    问题描述:WPF中DataGrid横向滚动条无法拖动
    进一步观察:列头拖动大小的时候到最右端就不能继续再拖,始终无法超出DataGrid范围
    测试代码

    <Window x:Class="DataGridTest.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <TabControl>
                <TabItem Header="会出现横向滚动条">
                    <Grid>
                        <Grid.RowDefinitions >
                            <RowDefinition Height="15"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <DataGrid x:Name="testDataGrid"
                                  HorizontalScrollBarVisibility="Visible"
                                  AutoGenerateColumns="False" 
                                  Grid.Row="1">
                            <DataGrid.Columns>
                                <DataGridTextColumn Header="header1" Binding="{Binding Data1}" Width="auto"/>
                                <DataGridTextColumn Header="header2" Binding="{Binding Data2}" Width="auto"/>
                                <DataGridTextColumn Header="header3" Binding="{Binding Data3}" Width="auto"/>
                                <DataGridTextColumn Header="header4" Binding="{Binding Data4}" Width="auto"/>
                                <DataGridTextColumn Header="header5" Binding="{Binding Data5}" Width="auto"/>
                            </DataGrid.Columns>
                        </DataGrid>
                    </Grid>
                </TabItem>
                <TabItem Header="不会出现横向滚动条">
                    <Grid>
                        <Grid.RowDefinitions >
                            <RowDefinition Height="15"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <TextBlock Grid.Row="0" Text="123123"
                                   VerticalAlignment="Center"
                                   HorizontalAlignment="Center"/>
                        <DataGrid x:Name="testDataGrid2"
                                  HorizontalScrollBarVisibility="Visible"
                                  VerticalScrollBarVisibility="Visible"
                                  AutoGenerateColumns="False" 
                                  Grid.Row="1">
                            <DataGrid.Columns>
                                <DataGridTextColumn Header="header1" Binding="{Binding Data1}" Width="0.2*"/>
                                <DataGridTextColumn Header="header2" Binding="{Binding Data2}" Width="0.2*"/>
                                <DataGridTextColumn Header="header3" Binding="{Binding Data3}" Width="0.2*"/>
                                <DataGridTextColumn Header="header4" Binding="{Binding Data4}" Width="0.2*"/>
                                <DataGridTextColumn Header="header5" Binding="{Binding Data5}" Width="0.2*"/>
                            </DataGrid.Columns>
                        </DataGrid>
                    </Grid>
                </TabItem>
            </TabControl>
        </Grid>
    </Window>
    XAML
    using System.Collections.Generic;
    using System.Windows;
    
    namespace DataGridTest
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                IList<DataSourceEntity> entitys = new List<DataSourceEntity>();
                for (int i = 1; i < 20; i++)
                {
                    entitys.Add(new DataSourceEntity(i * 10000));
                }
                testDataGrid.ItemsSource = entitys;
                testDataGrid2.ItemsSource = entitys;
            }
        }
    
        public class DataSourceEntity
        {
            public DataSourceEntity(int i)
            {
                Data1 = i;
                Data2 = i;
                Data3 = i;
                Data4 = i;
                Data5 = i;
                Data6 = i;
            }
            public int Data1 { get; set; }
            public int Data2 { get; set; }
            public int Data3 { get; set; }
            public int Data4 { get; set; }
            public int Data5 { get; set; }
            public int Data6 { get; set; }
        }
    
        
    }
    CodeBehind

    结论

      /*
         * 目的:探测滚动条何种情况不会滚动
         *
         * 结论:
         * 蛋疼的设计,当DataGrid列宽按比列指定的时候,resize列宽,最大不会超过DataGrid宽度,所以无论
         * 如何都不会出现滚动条,要想使用,需要指定列的宽度,或者设置为Auto也是可以的
         * 此外,影响是否出现滚动条的因素还有很多,例如放到Grid中后,Grid高宽如果使用了Auto,
         * 初始化的时候也是不会显示的,这种比较容易发现,因为使用HorizontalScrollBarVisibility或者
         * VerticalScrollBarVisibility还是很容易发现滚动条位置的
         */

  • 相关阅读:
    台式机安装无线网卡建立共享操作
    Mean shift
    拉格朗日乘子法
    凸集和凸函数
    图像插值法
    高斯平滑
    gamma校正
    SIFT feature
    VS2013+Win10+opencv3.0配置(包括opencv2.4.10版本)
    caffe添加自己编写的Python层
  • 原文地址:https://www.cnblogs.com/goldren/p/3225454.html
Copyright © 2011-2022 走看看