/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/modules/Workspaces/WorkspacesEditor/MainPage.xaml
292 строки
17 KB
Niels Laute
[Workspaces] Move to WPF Fluent and tweak overall UX (#46172)
21 май 2026, 08:54
Не верифицирован
21 май 2026, 08:54
52bf042
Код
Авторство
О чём код?
<Page x:Class="WorkspacesEditor.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:converters="clr-namespace:WorkspacesEditor.Converters" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WorkspacesEditor" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:props="clr-namespace:WorkspacesEditor.Properties" Title="MainPage" d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> <Page.Resources> <BooleanToVisibilityConverter x:Key="BoolToVis" /> <converters:BooleanToInvertedVisibilityConverter x:Key="BooleanToInvertedVisibilityConverter" /> <Thickness x:Key="ContentDialogPadding">24,16,0,24</Thickness> <Thickness x:Key="ContentDialogCommandSpaceMargin">0,24,24,0</Thickness> </Page.Resources> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <!-- header + button --> <local:HeadingTextBlock x:Name="WorkspacesHeaderBlock" Grid.Row="0" Margin="24,0,48,16" AutomationProperties.HeadingLevel="Level1" FontSize="24" FontWeight="SemiBold" Foreground="{DynamicResource TextFillColorPrimaryBrush}" Text="{x:Static props:Resources.Workspaces}" /> <Button x:Name="NewProjectButton" Margin="0,0,24,36" HorizontalAlignment="Right" VerticalAlignment="Bottom" AutomationProperties.Name="{x:Static props:Resources.CreateWorkspace}" Click="NewProjectButton_Click" Style="{DynamicResource AccentButtonStyle}" TabIndex="3"> <StackPanel Orientation="Horizontal"> <TextBlock Margin="0,4,0,0" AutomationProperties.Name="{x:Static props:Resources.CreateWorkspace}" FontFamily="{DynamicResource SymbolThemeFontFamily}" Foreground="{DynamicResource TextOnAccentFillColorPrimaryBrush}" Text="" /> <TextBlock Margin="8,0,0,0" Foreground="{DynamicResource TextOnAccentFillColorPrimaryBrush}" Text="{x:Static props:Resources.CreateWorkspace}" /> </StackPanel> </Button> <!-- search + sort --> <StackPanel Grid.Row="1" Margin="24,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center" Orientation="Horizontal"> <Grid> <TextBox x:Name="SearchTextBox" Width="320" Text="{Binding SearchTerm, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ToolTip="{x:Static props:Resources.SearchExplanation}" /> <TextBlock Margin="12,0,0,0" VerticalAlignment="Center" Foreground="{DynamicResource TextFillColorSecondaryBrush}" IsHitTestVisible="False" Text="{x:Static props:Resources.Search}"> <TextBlock.Style> <Style TargetType="{x:Type TextBlock}"> <Setter Property="Visibility" Value="Collapsed" /> <Style.Triggers> <DataTrigger Binding="{Binding Text, ElementName=SearchTextBox}" Value=""> <Setter Property="Visibility" Value="Visible" /> </DataTrigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock> </Grid> <TextBlock Margin="-48,0,34,0" HorizontalAlignment="Left" VerticalAlignment="Center" AutomationProperties.Name="{x:Static props:Resources.Search}" FontFamily="{DynamicResource SymbolThemeFontFamily}" Foreground="{DynamicResource TextFillColorSecondaryBrush}" IsHitTestVisible="False" Text="" /> </StackPanel> <StackPanel Grid.Row="1" Margin="0,0,24,0" HorizontalAlignment="Right" Orientation="Horizontal"> <TextBlock Margin="12,0,8,0" VerticalAlignment="Center" Foreground="{DynamicResource TextFillColorPrimaryBrush}" Text="{x:Static props:Resources.SortBy}" /> <ComboBox MinWidth="140" SelectedIndex="{Binding OrderByIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> <ComboBoxItem Content="{x:Static props:Resources.LastLaunched}" /> <ComboBoxItem Content="{x:Static props:Resources.Created}" /> <ComboBoxItem Content="{x:Static props:Resources.Name}" /> </ComboBox> </StackPanel> <!-- content --> <TextBlock Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" Foreground="{DynamicResource TextFillColorSecondaryBrush}" Text="{Binding EmptyWorkspacesViewMessage, UpdateSourceTrigger=PropertyChanged}" TextAlignment="Center" Visibility="{Binding IsWorkspacesViewEmpty, Mode=OneWay, Converter={StaticResource BoolToVis}, UpdateSourceTrigger=PropertyChanged}" /> <ScrollViewer Grid.Row="2" Margin="0,24,0,0" VerticalContentAlignment="Stretch" VerticalScrollBarVisibility="Auto" Visibility="{Binding IsWorkspacesViewEmpty, Mode=OneWay, Converter={StaticResource BooleanToInvertedVisibilityConverter}, UpdateSourceTrigger=PropertyChanged}"> <ItemsControl x:Name="WorkspacesItemsControl" Margin="24,0,24,24" ItemsSource="{Binding WorkspacesView, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel HorizontalAlignment="Stretch" IsItemsHost="True" Orientation="Vertical" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate DataType="models:Project"> <Button x:Name="EditButton" Margin="0,4,0,0" Padding="1" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" AutomationProperties.Name="{x:Static props:Resources.Edit}" Click="EditButtonClicked"> <Grid HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <StackPanel Margin="12,8,8,8" HorizontalAlignment="Left" Orientation="Vertical"> <TextBlock Margin="0,0,0,8" FontSize="16" FontWeight="SemiBold" Text="{Binding Name, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /> <StackPanel Margin="0,0,0,8" Orientation="Horizontal"> <Image Height="16" Source="{Binding PreviewIcons, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /> <TextBlock Margin="8,0,8,0" VerticalAlignment="Center" Foreground="{DynamicResource TextFillColorSecondaryBrush}" Text="{Binding AppsCountString}" /> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Margin="0,0,8,0" VerticalAlignment="Center" FontFamily="{DynamicResource SymbolThemeFontFamily}" FontSize="12" Foreground="{DynamicResource TextFillColorSecondaryBrush}" Text="" /> <TextBlock VerticalAlignment="Center" FontSize="12" Foreground="{DynamicResource TextFillColorSecondaryBrush}" Text="{Binding LastLaunched, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /> </StackPanel> </StackPanel> <StackPanel Grid.Column="1" Margin="12,12,12,12" Orientation="Horizontal"> <Button Margin="0,0,8,0" AutomationProperties.Name="{x:Static props:Resources.Launch}" Click="LaunchButton_Click" Content="{x:Static props:Resources.Launch}" /> <StackPanel x:Name="WorkspaceActionGroup" Orientation="Horizontal"> <Button x:Name="MoreButton" Padding="8" HorizontalAlignment="Right" Click="MoreButton_Click" Style="{DynamicResource SubtleButtonStyle}"> <TextBlock FontFamily="{DynamicResource SymbolThemeFontFamily}" Foreground="{DynamicResource TextFillColorPrimaryBrush}" Text="" /> </Button> <Popup AllowsTransparency="True" Closed="PopupClosed" IsOpen="{Binding IsPopupVisible, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Placement="Left" PlacementTarget="{Binding ElementName=MoreButton}" StaysOpen="False"> <Grid> <Border Background="{DynamicResource SolidBackgroundFillColorSecondaryBrush}" BorderBrush="{DynamicResource SurfaceStrokeColorDefaultBrush}" BorderThickness="1" CornerRadius="8"> <StackPanel Orientation="Vertical"> <Button Padding="8,8,24,8" HorizontalAlignment="Stretch" HorizontalContentAlignment="Left" AutomationProperties.Name="{x:Static props:Resources.Edit}" Click="EditButtonClicked" Style="{DynamicResource SubtleButtonStyle}"> <StackPanel HorizontalAlignment="Left" Orientation="Horizontal"> <TextBlock VerticalAlignment="Center" AutomationProperties.Name="{x:Static props:Resources.Edit}" FontFamily="{DynamicResource SymbolThemeFontFamily}" Foreground="{DynamicResource TextFillColorPrimaryBrush}" Text="" /> <TextBlock Margin="8,0,0,0" VerticalAlignment="Center" AutomationProperties.Name="{x:Static props:Resources.Edit}" Foreground="{DynamicResource TextFillColorPrimaryBrush}" Text="{x:Static props:Resources.Edit}" /> </StackPanel> </Button> <Rectangle Height="1" HorizontalAlignment="Stretch" Fill="{DynamicResource DividerStrokeColorDefaultBrush}" /> <Button Padding="8,8,24,8" HorizontalAlignment="Stretch" HorizontalContentAlignment="Left" AutomationProperties.Name="{x:Static props:Resources.Delete}" Click="DeleteButtonClicked" Style="{DynamicResource SubtleButtonStyle}"> <StackPanel Orientation="Horizontal"> <TextBlock VerticalAlignment="Center" AutomationProperties.Name="{x:Static props:Resources.Delete}" FontFamily="{DynamicResource SymbolThemeFontFamily}" Foreground="{DynamicResource TextFillColorPrimaryBrush}" Text="" /> <TextBlock Margin="8,0,0,0" VerticalAlignment="Center" AutomationProperties.Name="{x:Static props:Resources.Delete}" Foreground="{DynamicResource TextFillColorPrimaryBrush}" Text="{x:Static props:Resources.Delete}" /> </StackPanel> </Button> </StackPanel> </Border> </Grid> </Popup> </StackPanel> </StackPanel> </Grid> </Button> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </ScrollViewer> </Grid> </Page>