internal Row(User user, Role role) { User = user; Role = role; LabelUserName.Content = User.UserName; LabelUserName.HorizontalContentAlignment = HorizontalAlignment.Left; LabelContextHeader.Content = User.UserName; ImageAvatar.Height = 28; ImageAvatar.Width = 28; SetDock(LabelUserName, Dock.Left); SetDock(ImageAvatar, Dock.Left); Children.Add(ImageAvatar); Children.Add(LabelUserName); // UserContextMenu.Items.Add(LabelContextHeader); UserContextMenu.Items.Add(MenuItemChangeRole); UserContextMenu.Items.Add(MenuItemKick); EventTrigger.RoutedEvent = Button.ClickEvent; LabelUserName.ContextMenu = UserContextMenu; LabelUserName.Triggers.Add(EventTrigger); LabelUserName.MouseEnter += (o, e) => { LabelUserName.Background = Brushes.DarkGray; }; LabelUserName.MouseLeave += (o, e) => { LabelUserName.Background = Brushes.Transparent; }; MenuItemKick.Click += (o, e) => { KickUser?.Invoke(this, new KickUserEventArgs(User)); }; MenuItemChangeRole.Click += (o, e) => { ChangeUserRole?.Invoke(this, new ChangeUserRoleEventArgs(User, Role)); }; LabelUserName.MouseUp += (o, e) => { LabelUserName.ContextMenu.IsOpen = true; }; Application.Current.Dispatcher.Invoke(async() => { await ImageResolver.DownloadUserImageAsync(user.ImageName, bitmap => { ImageAvatar.Source = bitmap; }); }); }
void dialog_LostFocused(IFocusable sender, FocusEventArgs args) { var dialog = sender as UserMenuDialog; if (dialog.Selected) { sound.Play(PPDSetting.DefaultSounds[1], -1000); UserMenuDialog.Mode mode = dialog.SelectedMode; switch (mode) { case UserMenuDialog.Mode.ChangeLeader: ChangeLeader?.Invoke(this, EventArgs.Empty); break; case UserMenuDialog.Mode.Kick: KickUser?.Invoke(this, EventArgs.Empty); break; } } this.RemoveChild(dialog); }
void userSelectComponent_KickUser(object sender, EventArgs e) { KickUser?.Invoke(userSelectComponent.SelectedUser); }