WPF DataGrid disable auto scroll
基本上,我有一个应用程序可以帮助我对照片和电影的收藏进行分类/分类。这非常简单,我有一个
但是当我单击文件名时(当我单击同一行但在
问题在于,现在我看不到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <Controls:MetroWindow x:Class="FileOrganiser.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:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" xmlns:local="clr-namespace:FileOrganiser" mc:Ignorable="d" Title="File Organiser" Height="450" Width="800"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*" /> <ColumnDefinition Width="1*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="1*" /> <RowDefinition Height="8*" /> <RowDefinition Height="1*" /> </Grid.RowDefinitions> <MediaElement x:Name="Media" Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Margin="5"/> <DataGrid x:Name="FilesList" Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center" SelectionChanged="FilesList_OnSelectionChanged"> </DataGrid> <Button x:Name="ButtonSOrt" Grid.Column="1" Grid.Row="2"></Button> </Grid> </Controls:MetroWindow> |
重要的是,我自己没有定义列,这就是我填充数据网格的方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public MainWindow() { InitializeComponent(); while (true) { RootDir = FileUtils.SelectRootFolder(); if (RootDir == string.Empty) MessageBox.Show("Select a root folder!"); else break; } files = Directory.GetFiles(RootDir); var videos = files.Select(file => new Video(Path.GetFileName(file), false)).ToList(); FilesList.ItemsSource = videos; } |
因此,我通过更改代码中的
决定再回答一个问题,因为这应该是首选方法,因为它可以使您更好地控制布局:
将其放入您的XAML:
1 2 3 4 5 6 | <DataGrid x:Name="FilesList" HorizontalAlignment="Center" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridCheckBoxColumn Binding="{Binding Keep}" Width="25"/> <DataGridTextColumn Binding="{Binding Filename}" Width="*"/> </DataGrid.Columns> </DataGrid> |
后面的代码中无需进行任何更改。
Datagrid应该具有以下附加属性:
https://docs.microsoft.com/de-de/dotnet/api/system.windows.controls.scrollviewer.horizo??ntalscrollbarvisibility?view=netframework-4.8
将此设置为" Disabled ":
1 | Scrollviewer.HorizontalScrollBarVisibility="Disabled" |