private void SetupLandscapeLayout() { SecondGrid.SetValue(Grid.RowProperty, 0); SecondGrid.SetValue(Grid.ColumnProperty, 1); FirstGrid.SetValue(Grid.RowSpanProperty, 2); FirstGrid.SetValue(Grid.ColumnSpanProperty, 1); SecondGrid.SetValue(Grid.RowSpanProperty, 2); SecondGrid.SetValue(Grid.ColumnSpanProperty, 1); }
private void Confirm_Click(object Sender, RoutedEventArgs E) { if (!IsSelectingAi) { if ((bool)AiGrid.Tag) { var MarginAnimation = new ThicknessAnimation() { From = FirstGrid.Margin, To = new Thickness( FirstGrid.Margin.Left - 50, FirstGrid.Margin.Top, FirstGrid.Margin.Right + 50, FirstGrid.Margin.Bottom ), Duration = TimeSpan.FromSeconds(0.25), EasingFunction = new ExponentialEase() { EasingMode = EasingMode.EaseOut } }; MarginAnimation.Completed += delegate { AiStack.Children.Clear(); foreach (var Ai in App.AiList) { if (ChosenAi.Contains(Ai)) { continue; } var AiItem = new AiItem() { Height = 350, Width = 250 }; AiItem.Init(Ai); AiItem.SelectSyncAction = delegate(AI Target) { SelectedAi = Target; AiStack.Children.OfType <AiItem>() .Where(O => !ReferenceEquals(O.Ai, Target)) .ToList().ForEach(O => O.Select(false)); }; AiStack.Children.Add(AiItem); } FirstGrid.Visibility = Visibility.Hidden; SecondGrid.Visibility = Visibility.Visible; SecondGrid.BeginAnimation(OpacityProperty, new DoubleAnimation() { From = 0, To = 1, Duration = TimeSpan.FromSeconds(0.25), EasingFunction = new ExponentialEase() { EasingMode = EasingMode.EaseIn } }); SecondGrid.BeginAnimation(MarginProperty, new ThicknessAnimation() { From = new Thickness( SecondGrid.Margin.Left + 50, SecondGrid.Margin.Top, SecondGrid.Margin.Right - 50, SecondGrid.Margin.Bottom ), To = SecondGrid.Margin, Duration = TimeSpan.FromSeconds(0.25), EasingFunction = new ExponentialEase() { EasingMode = EasingMode.EaseIn } }); }; FirstGrid.BeginAnimation(OpacityProperty, new DoubleAnimation() { From = 1, To = 0, Duration = TimeSpan.FromSeconds(0.25), EasingFunction = new ExponentialEase() { EasingMode = EasingMode.EaseOut } }); FirstGrid.BeginAnimation(MarginProperty, MarginAnimation); IsSelectingAi = true; } else { if (!SelfChoosable) { MessageBox.Show("您已经将自己加入某个角色槽了。若要重新选择角色槽,请先从原来的角色槽退出。", "选择加入者", MessageBoxButton.OK, MessageBoxImage.Information); return; } IsSelectingAi = false; Canceled = false; this.Close(); } } else { if (SelectedAi == null) { MessageBox.Show("请先选择一个AI角色。", "选择加入者", MessageBoxButton.OK, MessageBoxImage.Information); return; } IsSelectingAi = true; Canceled = false; this.Close(); } }