/// <summary> /// インスタンスを生成します。 /// </summary> /// <param name="screen"></param> public PredefinedColorDialog(Screen screen) : base(screen) { PredefinedColors = new List<PredefinedColor>(); PredefinedColors.AddRange(PredefinedColor.PredefinedColors); PredefinedColors.Sort((x, y) => x.Name.CompareTo(y.Name)); // 開く際に openAnimation で Width を設定するので 0 で初期化します。 Width = 0; ShadowOffset = new Vector2(4); Padding = new Thickness(16); var stackPanel = new StackPanel(screen) { Orientation = Orientation.Vertical, HorizontalAlignment = HorizontalAlignment.Stretch }; Content = stackPanel; tab = new TabControl(screen) { SelectedIndex = 0 }; stackPanel.Children.Add(tab); predefinedColorGrid = new PredefinedColorGrid(screen, this) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch }; tab.Items.Add(predefinedColorGrid); predefinedColorList = new PredefinedColorList(screen, this) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch }; tab.Items.Add(predefinedColorList); var separator = ControlUtil.CreateDefaultSeparator(screen); stackPanel.Children.Add(separator); viewModeButton = ControlUtil.CreateDefaultDialogButton(screen, Strings.ListViewModeButton); viewModeButton.Click += OnViewModeButtonClick; stackPanel.Children.Add(viewModeButton); var sortByNameButton = ControlUtil.CreateDefaultDialogButton(screen, Strings.SortByNameButton); sortByNameButton.Click += OnSortByNameClick; stackPanel.Children.Add(sortByNameButton); var sortByColorButton = ControlUtil.CreateDefaultDialogButton(screen, Strings.SortByColorButton); sortByColorButton.Click += OnSortByColorClick; stackPanel.Children.Add(sortByColorButton); cancelButton = ControlUtil.CreateDefaultDialogButton(screen, Strings.CancelButton); cancelButton.Click += (Control s, ref RoutedEventContext c) => Close(); stackPanel.Children.Add(cancelButton); const float windowWidth = 400; openAnimation = new FloatLerpAnimation { Action = (current) => { Width = current; }, From = 0, To = windowWidth, Duration = TimeSpan.FromSeconds(0.1f) }; Animations.Add(openAnimation); // 閉じる場合には closeAnimation を実行し、その完了で完全に閉じます。 closeAnimation = new FloatLerpAnimation { Action = (current) => { Width = current; }, From = windowWidth, To = 0, Duration = TimeSpan.FromSeconds(0.1f) }; closeAnimation.Completed += (s, e) => base.Close(); Animations.Add(closeAnimation); }
/// <summary> /// インスタンスを生成します。 /// </summary> /// <param name="screen"></param> public PredefinedColorDialog(Screen screen) : base(screen) { PredefinedColors = new List <PredefinedColor>(); PredefinedColors.AddRange(PredefinedColor.PredefinedColors); PredefinedColors.Sort((x, y) => x.Name.CompareTo(y.Name)); // 開く際に openAnimation で Width を設定するので 0 で初期化します。 Width = 0; ShadowOffset = new Vector2(4); Padding = new Thickness(16); var stackPanel = new StackPanel(screen) { Orientation = Orientation.Vertical, HorizontalAlignment = HorizontalAlignment.Stretch }; Content = stackPanel; tab = new TabControl(screen) { SelectedIndex = 0 }; stackPanel.Children.Add(tab); predefinedColorGrid = new PredefinedColorGrid(screen, this) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch }; tab.Items.Add(predefinedColorGrid); predefinedColorList = new PredefinedColorList(screen, this) { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch }; tab.Items.Add(predefinedColorList); var separator = ControlUtil.CreateDefaultSeparator(screen); stackPanel.Children.Add(separator); viewModeButton = ControlUtil.CreateDefaultDialogButton(screen, Strings.ListViewModeButton); viewModeButton.Click += OnViewModeButtonClick; stackPanel.Children.Add(viewModeButton); var sortByNameButton = ControlUtil.CreateDefaultDialogButton(screen, Strings.SortByNameButton); sortByNameButton.Click += OnSortByNameClick; stackPanel.Children.Add(sortByNameButton); var sortByColorButton = ControlUtil.CreateDefaultDialogButton(screen, Strings.SortByColorButton); sortByColorButton.Click += OnSortByColorClick; stackPanel.Children.Add(sortByColorButton); cancelButton = ControlUtil.CreateDefaultDialogButton(screen, Strings.CancelButton); cancelButton.Click += (Control s, ref RoutedEventContext c) => Close(); stackPanel.Children.Add(cancelButton); const float windowWidth = 400; openAnimation = new FloatLerpAnimation { Action = (current) => { Width = current; }, From = 0, To = windowWidth, Duration = TimeSpan.FromSeconds(0.1f) }; Animations.Add(openAnimation); // 閉じる場合には closeAnimation を実行し、その完了で完全に閉じます。 closeAnimation = new FloatLerpAnimation { Action = (current) => { Width = current; }, From = windowWidth, To = 0, Duration = TimeSpan.FromSeconds(0.1f) }; closeAnimation.Completed += (s, e) => base.Close(); Animations.Add(closeAnimation); }