This commit is contained in:
NaBian committed 2020-01-08 00:05:24 +08:00
1 parent dc897f3a72
commit 9aefdce97d
2 files changed
+21 -19

No files matched your search

@@ -224,11 +224,7 @@ namespace HandyControl.Controls
return; return;
} }
if (!IsTabFillEnabled) UpdateOverflowButton();
{
_itemShowCount = (int)(ActualWidth / TabItemWidth);
_buttonOverflow?.Show(ShowOverflowButton && Items.Count > 0 && Items.Count >= _itemShowCount);
}
if (IsInternalAction) if (IsInternalAction)
{ {
@@ -292,15 +288,6 @@ namespace HandyControl.Controls
if (_buttonOverflow != null) if (_buttonOverflow != null)
{ {
if (ItemsSource != null)
{
Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
}
var size = DesiredSize;
_itemShowCount = (int)(size.Width / TabItemWidth);
_buttonOverflow.Show(ShowOverflowButton && Items.Count > 0 && Items.Count >= _itemShowCount);
var menu = new ContextMenu var menu = new ContextMenu
{ {
Placement = PlacementMode.Bottom, Placement = PlacementMode.Bottom,
@@ -312,6 +299,21 @@ namespace HandyControl.Controls
} }
} }
protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
{
base.OnRenderSizeChanged(sizeInfo);
UpdateOverflowButton();
}
private void UpdateOverflowButton()
{
if (!IsTabFillEnabled)
{
_itemShowCount = (int)(ActualWidth / TabItemWidth);
_buttonOverflow?.Show(ShowOverflowButton && Items.Count > 0 && Items.Count >= _itemShowCount);
}
}
private void Menu_Closed(object sender, RoutedEventArgs e) => _buttonOverflow.IsChecked = false; private void Menu_Closed(object sender, RoutedEventArgs e) => _buttonOverflow.IsChecked = false;
private void ButtonScrollRight_Click(object sender, RoutedEventArgs e) => private void ButtonScrollRight_Click(object sender, RoutedEventArgs e) =>
@@ -346,7 +348,7 @@ namespace HandyControl.Controls
{ {
_buttonOverflow.IsChecked = false; _buttonOverflow.IsChecked = false;
var list = GetActuaList(); var list = GetActualList();
if (list == null) return; if (list == null) return;
var actualItem = ItemContainerGenerator.ItemFromContainer(item); var actualItem = ItemContainerGenerator.ItemFromContainer(item);
@@ -391,7 +393,7 @@ namespace HandyControl.Controls
{ {
var actualItem = currentItem != null ? ItemContainerGenerator.ItemFromContainer(currentItem) : null; var actualItem = currentItem != null ? ItemContainerGenerator.ItemFromContainer(currentItem) : null;
var list = GetActuaList(); var list = GetActualList();
if (list == null) return; if (list == null) return;
IsInternalAction = true; IsInternalAction = true;
@@ -418,7 +420,7 @@ namespace HandyControl.Controls
SetCurrentValue(SelectedIndexProperty, Items.Count == 0 ? -1 : 0); SetCurrentValue(SelectedIndexProperty, Items.Count == 0 ? -1 : 0);
} }
internal IList GetActuaList() internal IList GetActualList()
{ {
IList list; IList list;
if (ItemsSource != null) if (ItemsSource != null)
@@ -285,7 +285,7 @@ namespace HandyControl.Controls
parent.IsInternalAction = true; parent.IsInternalAction = true;
RaiseEvent(new RoutedEventArgs(ClosedEvent, item)); RaiseEvent(new RoutedEventArgs(ClosedEvent, item));
var list = parent.GetActuaList(); var list = parent.GetActualList();
list?.Remove(item); list?.Remove(item);
} }
@@ -392,7 +392,7 @@ namespace HandyControl.Controls
RenderTransform = new TranslateTransform(resultX, 0); RenderTransform = new TranslateTransform(resultX, 0);
if (index == -1) return; if (index == -1) return;
var list = parent.GetActuaList(); var list = parent.GetActualList();
if (list == null) return; if (list == null) return;
var item = parent.ItemContainerGenerator.ItemFromContainer(this); var item = parent.ItemContainerGenerator.ItemFromContainer(this);