В основном у меня есть приложение, которое поможет мне отсортировать / каталогизировать мою коллекцию фотографий и фильмов.Это действительно просто, у меня есть DataGrid
, в котором перечислены все файлы в определенной папке.Есть два столбца: Keep
и Filename
.Я бы пошел вниз по этой DataGrid, используя стрелки и нажимая пробел, хочу ли я сохранить файл (первый столбец - bool
, поэтому, когда я нажимаю пробел, флажок проверяется).Поэтому, не нажимая ничего, это выглядит так:
Но когда я нажимаю на имя файла (когда я нажимаю на ту же строку, но Keep
столбец, он не прокручивается, но он намного меньше по сравнению со столбцом имени файла, поэтому в итоге я всегда нажимаю на часть столбца имени файла в строке) и слишком долго он прокручивается по горизонтали, например:
Проблема в том, что теперь я не вижу столбец Keep
, поэтому мне нужно вручную прокрутить назад, чтобы увидеть, пометил ли я файл или нет.Чтобы решить эту проблему, я увидел много ответов на SO, в которых предлагалось редактировать часть XAML MainWindow
.Проблема в том, что это мой XAML-файл:
<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>
Важная часть заключается в том, что я не определяю столбцы самостоятельно, и вот как я заполняю сетку данных:
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;
}
Так что я делаю это, изменяя ItemSource
в коде.И если бы я сам определил столбцы и также изменил ItemSource
следующим образом, у меня было бы 4 столбца вместо 2. Так есть ли способ предотвратить эту автопрокрутку, когда я реализую ее таким образом?