Browse Source

initial work toward managed caption buttons.

feature/managed-chrome-buttons-api
Dan Walmsley 6 years ago
parent
commit
0f271df11f
  1. 119
      samples/ControlCatalog/MainWindow.xaml
  2. 6
      samples/ControlCatalog/MainWindow.xaml.cs

119
samples/ControlCatalog/MainWindow.xaml

@ -7,84 +7,51 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:ControlCatalog.ViewModels" xmlns:vm="clr-namespace:ControlCatalog.ViewModels"
xmlns:v="clr-namespace:ControlCatalog.Views" xmlns:v="clr-namespace:ControlCatalog.Views"
ExtendClientAreaToDecorationsHint="{Binding ExtendClientAreaEnabled}" ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="{Binding ChromeHints}" ExtendClientAreaChromeHints="Default"
ExtendClientAreaTitleBarHeightHint="{Binding TitleBarHeight}" ExtendClientAreaTitleBarHeightHint="-1"
TransparencyLevelHint="{Binding TransparencyLevel}" TransparencyLevelHint="{Binding TransparencyLevel}"
x:Name="MainWindow" x:Name="MainWindow"
x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}" Background="{x:Null}"> x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}" Background="{x:Null}">
<NativeMenu.Menu> <StackPanel Spacing="2" Margin="0 0 7 0" Height="30" Opacity="0.5" VerticalAlignment="Top" HorizontalAlignment="Right" TextBlock.FontSize="10" Orientation="Horizontal">
<NativeMenu> <StackPanel.Styles>
<NativeMenuItem Header="File"> <Style Selector="Panel">
<NativeMenuItem.Menu> <Setter Property="Width" Value="45" />
<NativeMenu> <Setter Property="Background" Value="Transparent" />
<NativeMenuItem Icon="/Assets/test_icon.ico" Header="Open" Clicked="OnOpenClicked" Gesture="Ctrl+O"/> <Setter Property="TextBlock.Foreground" Value="#AFFFFFFF" />
<NativeMenuItemSeperator/> </Style>
<NativeMenuItem Icon="/Assets/github_icon.png" Header="Recent"> <Style Selector="Path">
<NativeMenuItem.Menu> <Setter Property="Fill" Value="#1FFFFFFF" />
<NativeMenu/> </Style>
</NativeMenuItem.Menu> <Style Selector="Panel:pointerover">
</NativeMenuItem> <Setter Property="Background" Value="#1FFFFFFF" />
<NativeMenuItemSeperator/> </Style>
<NativeMenuItem Header="{x:Static local:MainWindow.MenuQuitHeader}" <Style Selector="Panel#PART_CloseButton:pointerover">
Gesture="{x:Static local:MainWindow.MenuQuitGesture}" <Setter Property="Background" Value="#AFFF0000" />
Clicked="OnCloseClicked" /> </Style>
</NativeMenu> </StackPanel.Styles>
</NativeMenuItem.Menu> <Panel>
</NativeMenuItem> <Path Width="10" Height="10" StrokeThickness="0" Stretch="UniformToFill" Data="M205 1024h819v-819h-205v469l-674 -674l-145 145l674 674h-469v205zM1374 1229h469v-205h-819v819h205v-469l674 674l145 -145z" />
<NativeMenuItem Header="Edit"> </Panel>
<NativeMenuItem.Menu>
<NativeMenu> <Panel>
<NativeMenuItem Header="Copy"/> <Path Width="10" Height="10" StrokeThickness="0" Stretch="UniformToFill" Data="M2048 410h-410v-410h-1638v1638h410v410h1638v-1638zM1434 1434h-1229v-1229h1229v1229zM1843 1843h-1229v-205h1024v-1024h205v1229z" />
<NativeMenuItem Header="Paste"/> </Panel>
</NativeMenu>
</NativeMenuItem.Menu>
</NativeMenuItem>
<NativeMenuItem Header="Options">
<NativeMenuItem.Menu>
<NativeMenu>
<NativeMenuItem Header="Check Me (None)"
Command="{Binding ToggleMenuItemCheckedCommand}"
ToggleType="None"
IsChecked="{Binding IsMenuItemChecked}" />
<NativeMenuItem Header="Check Me (CheckBox)"
Command="{Binding ToggleMenuItemCheckedCommand}"
ToggleType="CheckBox"
IsChecked="{Binding IsMenuItemChecked}" />
<NativeMenuItem Header="Check Me (Radio)"
Command="{Binding ToggleMenuItemCheckedCommand}"
ToggleType="Radio"
IsChecked="{Binding IsMenuItemChecked}" />
</NativeMenu>
</NativeMenuItem.Menu>
</NativeMenuItem>
</NativeMenu>
</NativeMenu.Menu>
<Window.DataTemplates> <Panel>
<DataTemplate DataType="vm:NotificationViewModel"> <Path Width="10" Height="10" StrokeThickness="0" Stretch="UniformToFill" Data="M2048 2048v-819h-205v469l-1493 -1493h469v-205h-819v819h205v-469l1493 1493h-469v205h819z" />
<v:CustomNotificationView /> </Panel>
</DataTemplate>
</Window.DataTemplates> <Panel>
<Panel> <Path Width="11" Height="1" StrokeThickness="0" Stretch="UniformToFill" Data="M2048 1229v-205h-2048v205h2048z" />
<Panel Margin="{Binding #MainWindow.OffScreenMargin}"> </Panel>
<DockPanel LastChildFill="True" Margin="{Binding #MainWindow.WindowDecorationMargins}">
<Menu Name="MainMenu" DockPanel.Dock="Top"> <Panel>
<MenuItem Header="File"> <Path Width="11" Height="10" StrokeThickness="0" Stretch="UniformToFill" Data="M2048 2048v-2048h-2048v2048h2048zM1843 1843h-1638v-1638h1638v1638z" />
<MenuItem Header="Exit" Command="{Binding ExitCommand}" /> </Panel>
</MenuItem>
<MenuItem Header="Help"> <Panel x:Name="PART_CloseButton">
<MenuItem Header="About" Command="{Binding AboutCommand}" /> <Path Width="11" Height="11" StrokeThickness="0" Stretch="UniformToFill" Data="M1169 1024l879 -879l-145 -145l-879 879l-879 -879l-145 145l879 879l-879 879l145 145l879 -879l879 879l145 -145z" />
</MenuItem> </Panel>
</Menu> </StackPanel>
<local:MainView />
</DockPanel>
</Panel>
<Border IsVisible="{Binding ExtendClientAreaEnabled}" BorderThickness="1 1 1 0" CornerRadius="4 4 0 0" BorderBrush="#55000000" Height="22" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="250 8 0 0">
<Border.Background>
<SolidColorBrush Color="White" Opacity="0.7" />
</Border.Background>
<TextBlock Margin="5 5 5 0" Text="Content In TitleBar" />
</Border>
</Panel>
</Window> </Window>

6
samples/ControlCatalog/MainWindow.xaml.cs

@ -27,11 +27,7 @@ namespace ControlCatalog
MaxItems = 3 MaxItems = 3
}; };
DataContext = new MainWindowViewModel(_notificationArea); DataContext = new MainWindowViewModel(_notificationArea);
_recentMenu = ((NativeMenu.GetMenu(this).Items[0] as NativeMenuItem).Menu.Items[2] as NativeMenuItem).Menu;
var mainMenu = this.FindControl<Menu>("MainMenu");
mainMenu.AttachedToVisualTree += MenuAttached;
} }
public static string MenuQuitHeader => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "Quit Avalonia" : "E_xit"; public static string MenuQuitHeader => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "Quit Avalonia" : "E_xit";

Loading…
Cancel
Save