From 3e90fca0f2c106314382d57c128e776b9e7ca64c Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Mon, 24 Jun 2019 22:12:49 +0800 Subject: [PATCH] fixed some issues at design time --- .../UserControl/Main/OverView.xaml | 6 +++--- .../Controls/ColorPicker/ColorPicker.cs | 2 +- .../Controls/Cover/CoverFlow/CoverFlow.cs | 15 +++++++++++---- .../Controls/Other/Carousel.cs | 10 +++++----- .../Controls/Time/TimeBar/TimeBar.cs | 3 ++- .../Styles/TransitioningContentControl.xaml | 2 +- 6 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml index 48031c00..edd81b73 100644 --- a/src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml @@ -343,13 +343,13 @@ - + - + - + diff --git a/src/Shared/HandyControl_Shared/Controls/ColorPicker/ColorPicker.cs b/src/Shared/HandyControl_Shared/Controls/ColorPicker/ColorPicker.cs index 04754ddd..a3106db3 100644 --- a/src/Shared/HandyControl_Shared/Controls/ColorPicker/ColorPicker.cs +++ b/src/Shared/HandyControl_Shared/Controls/ColorPicker/ColorPicker.cs @@ -478,7 +478,7 @@ namespace HandyControl.Controls /// private void UpdateStatus(Color color) { - if (_isOnDragging) return; + if (_isOnDragging || _sliderColor == null) return; var r = color.R; var g = color.G; diff --git a/src/Shared/HandyControl_Shared/Controls/Cover/CoverFlow/CoverFlow.cs b/src/Shared/HandyControl_Shared/Controls/Cover/CoverFlow/CoverFlow.cs index dbf1498e..18427620 100644 --- a/src/Shared/HandyControl_Shared/Controls/Cover/CoverFlow/CoverFlow.cs +++ b/src/Shared/HandyControl_Shared/Controls/Cover/CoverFlow/CoverFlow.cs @@ -204,7 +204,7 @@ namespace HandyControl.Controls /// private void Remove(int pos) { - var item = _itemShowList[pos]; + if (!_itemShowList.TryGetValue(pos, out var item)) return; _visualParent.Children.Remove(item); _itemShowList.Remove(pos); } @@ -308,10 +308,17 @@ namespace HandyControl.Controls { if (content is Uri uri) { - return new CoverFlowItem(index, PageIndex, new Image + try { - Source = BitmapFrame.Create(uri) - }); + return new CoverFlowItem(index, PageIndex, new Image + { + Source = BitmapFrame.Create(uri, BitmapCreateOptions.DelayCreation, BitmapCacheOption.OnDemand) + }); + } + catch + { + return new CoverFlowItem(index, PageIndex, new ContentControl()); + } } return new CoverFlowItem(index, PageIndex, new ContentControl diff --git a/src/Shared/HandyControl_Shared/Controls/Other/Carousel.cs b/src/Shared/HandyControl_Shared/Controls/Other/Carousel.cs index 6fc3ed06..9fd38c42 100644 --- a/src/Shared/HandyControl_Shared/Controls/Other/Carousel.cs +++ b/src/Shared/HandyControl_Shared/Controls/Other/Carousel.cs @@ -61,7 +61,7 @@ namespace HandyControl.Controls _itemsControl = GetTemplateChild(ElementItemsControl) as ItemsPresenter; _panelPage = GetTemplateChild(ElementPanelPage) as Panel; - CheckNull(); + if (!CheckNull()) return; _panelPage.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler(ButtonPages_OnClick)); _appliedTemplate = true; @@ -74,10 +74,7 @@ namespace HandyControl.Controls UpdatePageButtons(_pageIndex); } - private void CheckNull() - { - if (_itemsControl == null || _panelPage == null) throw new Exception(); - } + private bool CheckNull() => !(_itemsControl == null || _panelPage == null); public static readonly DependencyProperty AutoRunProperty = DependencyProperty.Register( "AutoRun", typeof(bool), typeof(Carousel), new PropertyMetadata(ValueBoxes.FalseBox, (o, args) => @@ -195,6 +192,7 @@ namespace HandyControl.Controls /// public void UpdatePageButtons(int index = -1) { + if (!CheckNull()) return; if (!_appliedTemplate) return; var count = Items.Count; @@ -236,6 +234,7 @@ namespace HandyControl.Controls /// private void UpdateItemsPosition() { + if (!CheckNull()) return; if (!_appliedTemplate) return; if (Items.Count == 0) return; if (!IsCenter) @@ -284,6 +283,7 @@ namespace HandyControl.Controls private void ButtonPages_OnClick(object sender, RoutedEventArgs e) { + if (!CheckNull()) return; if (_selectedButton != null && _selectedButton.Content is Border borderOri) borderOri.Background = Brushes.White; _selectedButton = e.OriginalSource as Button; diff --git a/src/Shared/HandyControl_Shared/Controls/Time/TimeBar/TimeBar.cs b/src/Shared/HandyControl_Shared/Controls/Time/TimeBar/TimeBar.cs index fa0c9a9f..909e0e05 100644 --- a/src/Shared/HandyControl_Shared/Controls/Time/TimeBar/TimeBar.cs +++ b/src/Shared/HandyControl_Shared/Controls/Time/TimeBar/TimeBar.cs @@ -400,6 +400,7 @@ namespace HandyControl.Controls private void TimeBar_OnSizeChanged(object sender, SizeChangedEventArgs e) { + if (_canvasSpe == null) return; _speBlockList.Clear(); _canvasSpe.Children.Clear(); @@ -442,7 +443,7 @@ namespace HandyControl.Controls { var p = Mouse.GetPosition(this); var mlliseconds = (p.X - ActualWidth / 2) / _itemWidth * _timeSpeList[_speIndex]; - if (double.IsInfinity(mlliseconds)) return; + if (double.IsNaN(mlliseconds) || double.IsInfinity(mlliseconds)) return; _textBlockMove.Text = mlliseconds < 0 ? (SelectedTime - TimeSpan.FromMilliseconds(-mlliseconds)).ToString(TimeFormat) : (SelectedTime + TimeSpan.FromMilliseconds(mlliseconds)).ToString(TimeFormat); diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/TransitioningContentControl.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/TransitioningContentControl.xaml index dac6c0a9..81fb9f6a 100644 --- a/src/Shared/HandyControl_Shared/Themes/Styles/TransitioningContentControl.xaml +++ b/src/Shared/HandyControl_Shared/Themes/Styles/TransitioningContentControl.xaml @@ -87,7 +87,7 @@ - +