工具栏上,最小化按钮的实现。工具栏做成的是用户控件。
用户控件的xaml
<Button HorizontalAlignment="Right" Height="32" Click="MinimizeClick" />
用户控件的cs代码
private void MinimizeClick(object sender, RoutedEventArgs e){RaiseEvent(new RoutedEventArgs(MinimizeEvent, this));}
public static readonly RoutedEvent MinimizeEvent = EventManager.RegisterRoutedEvent(nameof(Minimize), RoutingStrategy.Bubble,typeof(EventHandler<RoutedEventArgs>), typeof(TopBar));public event RoutedEventHandler Minimize{add => AddHandler(MinimizeEvent, value);remove => RemoveHandler(MinimizeEvent, value);}
用户控件加载到页面后的xaml
<controls:TopBar x:Name="_topBar_" Grid.Row="0" Close="CloseClick"Maximize="MaximizeClick"Minimize="MinimizeClick"RestoreDown="RestoreDownClick"WindowChrome.IsHitTestVisibleInChrome="True"Show="{Binding SharedViewModel.ShowTopBar,Mode=TwoWay}"MouseMove="TopBarControl_OnMouseMove"HomeButtonIsEnabled ="{Binding SharedViewModel.HomeButtonIsEnabled }"SettingButtonVisibility ="{Binding SharedViewModel.SettingButtonVisibility }"Grid.ColumnSpan="2"><be:Interaction.Triggers><be:EventTrigger EventName="Setting"><be:InvokeCommandAction Command="{Binding SettingCommand}" /></be:EventTrigger><be:EventTrigger EventName="Home"><be:InvokeCommandAction Command="{Binding HomeCommand}" /></be:EventTrigger><be:EventTrigger EventName="Login"><be:InvokeCommandAction Command="{Binding ToLoginCommand}" /></be:EventTrigger></be:Interaction.Triggers></controls:TopBar>
.cs代码
HomeCommand = new DelegateCommand(OnHome);public DelegateCommand HomeCommand { get; private set; }void OnHome(){}