Skip to content

Commit 2867c97

Browse files
authored
Feature: Switched to StackPanel in the Details Layout template (#10936)
1 parent c810e41 commit 2867c97

File tree

2 files changed

+32
-42
lines changed

2 files changed

+32
-42
lines changed

src/Files.App/Views/LayoutModes/DetailsLayoutBrowser.xaml

Lines changed: 13 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -532,26 +532,14 @@
532532
</ListView.Header>
533533
<ListView.ItemTemplate>
534534
<DataTemplate x:DataType="local2:ListedItem">
535-
<Grid
535+
<StackPanel
536536
HorizontalAlignment="Stretch"
537537
AutomationProperties.Name="{x:Bind Name, Mode=OneWay}"
538538
IsRightTapEnabled="True"
539-
Loaded="Grid_Loaded"
539+
Loaded="StackPanel_Loaded"
540+
Orientation="Horizontal"
540541
ToolTipService.ToolTip="{x:Bind ItemTooltipText, Mode=OneWay}">
541-
<Grid.ColumnDefinitions>
542-
<ColumnDefinition Width="{Binding ColumnsViewModel.IconColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
543-
<ColumnDefinition Width="{Binding ColumnsViewModel.NameColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
544-
<ColumnDefinition Width="{Binding ColumnsViewModel.TagColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
545-
<ColumnDefinition Width="{Binding ColumnsViewModel.OriginalPathColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
546-
<ColumnDefinition Width="{Binding ColumnsViewModel.DateDeletedColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
547-
<ColumnDefinition Width="{Binding ColumnsViewModel.DateModifiedColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
548-
<ColumnDefinition Width="{Binding ColumnsViewModel.DateCreatedColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
549-
<ColumnDefinition Width="{Binding ColumnsViewModel.ItemTypeColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
550-
<ColumnDefinition Width="{Binding ColumnsViewModel.SizeColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
551-
<ColumnDefinition Width="{Binding ColumnsViewModel.StatusColumn.LengthIncludingGridSplitter, ElementName=PageRoot, Mode=OneWay}" />
552-
</Grid.ColumnDefinitions>
553542
<Grid
554-
Grid.Column="0"
555543
Width="24"
556544
Height="Auto"
557545
HorizontalAlignment="Center"
@@ -619,8 +607,7 @@
619607
</Grid>
620608

621609
<Grid
622-
Grid.Column="1"
623-
MinWidth="{Binding ColumnsViewModel.NameColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
610+
Width="{Binding ColumnsViewModel.NameColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
624611
Padding="12,0,0,0"
625612
HorizontalAlignment="Left"
626613
VerticalAlignment="Center"
@@ -649,7 +636,6 @@
649636

650637
<Grid
651638
x:Name="ItemTagGrid"
652-
Grid.Column="2"
653639
Width="{Binding ColumnsViewModel.TagColumn.Length.Value, ElementName=PageRoot, Mode=OneWay}"
654640
HorizontalAlignment="Stretch"
655641
VerticalAlignment="Center"
@@ -666,6 +652,7 @@
666652
ToolTipService.ToolTip="{x:Bind FileTagsUI[0].TagName, Mode=OneWay}"
667653
Visibility="{x:Bind FileTagsUI, Converter={StaticResource EmptyObjectToObjectConverter}, Mode=OneWay}">
668654
<TextBlock
655+
x:Name="ItemTag"
669656
FontSize="12"
670657
Style="{StaticResource ColumnContentTextBlock}"
671658
Text="{x:Bind FileTagsUI[0].TagName, Mode=OneWay}"
@@ -675,8 +662,7 @@
675662
</Grid>
676663

677664
<TextBlock
678-
x:Name="ItemOriginalPathGrid"
679-
Grid.Column="3"
665+
x:Name="ItemOriginalPath"
680666
Width="{Binding ColumnsViewModel.OriginalPathColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
681667
Padding="12,0,0,0"
682668
HorizontalAlignment="Stretch"
@@ -686,8 +672,7 @@
686672
Text="{x:Bind AsRecycleBinItem.ItemOriginalPath, Mode=OneWay}" />
687673

688674
<TextBlock
689-
x:Name="ItemDateDeletedGrid"
690-
Grid.Column="4"
675+
x:Name="ItemDateDeleted"
691676
Width="{Binding ColumnsViewModel.DateDeletedColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
692677
Padding="12,0,0,0"
693678
HorizontalAlignment="Stretch"
@@ -697,8 +682,7 @@
697682
Text="{x:Bind AsRecycleBinItem.ItemDateDeleted, Mode=OneWay}" />
698683

699684
<TextBlock
700-
x:Name="ItemDateModifiedGrid"
701-
Grid.Column="5"
685+
x:Name="ItemDateModified"
702686
Width="{Binding ColumnsViewModel.DateModifiedColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
703687
Padding="12,0,0,0"
704688
HorizontalAlignment="Stretch"
@@ -708,8 +692,7 @@
708692
Visibility="{Binding ColumnsViewModel.DateModifiedColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
709693

710694
<TextBlock
711-
x:Name="ItemDateCreatedGrid"
712-
Grid.Column="6"
695+
x:Name="ItemDateCreated"
713696
Width="{Binding ColumnsViewModel.DateCreatedColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
714697
Padding="12,0,0,0"
715698
HorizontalAlignment="Stretch"
@@ -719,8 +702,7 @@
719702
Visibility="{Binding ColumnsViewModel.DateCreatedColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
720703

721704
<TextBlock
722-
x:Name="ItemTypeGrid"
723-
Grid.Column="7"
705+
x:Name="ItemType"
724706
Width="{Binding ColumnsViewModel.ItemTypeColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
725707
Padding="12,0,0,0"
726708
HorizontalAlignment="Stretch"
@@ -730,8 +712,7 @@
730712
Visibility="{Binding ColumnsViewModel.ItemTypeColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
731713

732714
<TextBlock
733-
x:Name="ItemSizeGrid"
734-
Grid.Column="8"
715+
x:Name="ItemSize"
735716
Width="{Binding ColumnsViewModel.SizeColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
736717
Padding="12,0,0,0"
737718
HorizontalAlignment="Stretch"
@@ -741,8 +722,7 @@
741722
Visibility="{Binding ColumnsViewModel.SizeColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
742723

743724
<FontIcon
744-
x:Name="ItemStatusGrid"
745-
Grid.Column="9"
725+
x:Name="ItemStatus"
746726
Width="{Binding ColumnsViewModel.StatusColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
747727
Margin="12,0,0,0"
748728
HorizontalAlignment="Stretch"
@@ -751,7 +731,7 @@
751731
FontSize="12"
752732
Glyph="{x:Bind SyncStatusUI.Glyph, Mode=OneWay}"
753733
Visibility="{Binding ColumnsViewModel.StatusColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
754-
</Grid>
734+
</StackPanel>
755735
</DataTemplate>
756736
</ListView.ItemTemplate>
757737
<i:Interaction.Behaviors>

src/Files.App/Views/LayoutModes/DetailsLayoutBrowser.xaml.cs

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -595,11 +595,11 @@ public override void Dispose()
595595

596596
#endregion IDisposable
597597

598-
private void Grid_Loaded(object sender, RoutedEventArgs e)
598+
private void StackPanel_Loaded(object sender, RoutedEventArgs e)
599599
{
600600
// This is the best way I could find to set the context flyout, as doing it in the styles isn't possible
601601
// because you can't use bindings in the setters
602-
DependencyObject item = VisualTreeHelper.GetParent(sender as Grid);
602+
DependencyObject item = VisualTreeHelper.GetParent(sender as StackPanel);
603603
while (item is not ListViewItem)
604604
item = VisualTreeHelper.GetParent(item);
605605
if (item is ListViewItem itemContainer)
@@ -740,14 +740,24 @@ private double MeasureTextColumnEstimate(int columnIndex, int measureItemsCount,
740740
{
741741
var tbs = DependencyObjectHelpers.FindChildren<TextBlock>(FileList.ItemsPanelRoot).Where(tb =>
742742
{
743-
// isolated <TextBlock Grid.Column=...>
744-
if (tb.ReadLocalValue(Grid.ColumnProperty) != DependencyProperty.UnsetValue)
745-
return Grid.GetColumn(tb) == columnIndex;
746-
// <TextBlock> nested in <Grid Grid.Column=...>
747-
else if (tb.Parent is Grid parentGrid)
748-
return Grid.GetColumn(parentGrid) == columnIndex;
743+
int columnIndexFromName = tb.Name switch
744+
{
745+
"ItemName" => 1,
746+
"ItemTag" => 2,
747+
"ItemOriginalPath" => 3,
748+
"ItemDateDeleted" => 4,
749+
"ItemDateModified" => 5,
750+
"ItemDateCreated" => 6,
751+
"ItemType" => 7,
752+
"ItemSize" => 8,
753+
"ItemStatus" => 9,
754+
_ => -1,
755+
};
756+
757+
if (columnIndexFromName == -1)
758+
return false;
749759

750-
return false;
760+
return columnIndexFromName == columnIndex;
751761
});
752762

753763
// heuristic: usually, text with more letters are wider than shorter text with wider letters

0 commit comments

Comments
 (0)