Skip to content

Commit 8b8ea2b

Browse files
committed
feat: CloseRequested event to TabItemHelper
1 parent ba3858e commit 8b8ea2b

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

source/iNKORE.UI.WPF.Modern/Controls/Helpers/TabItemHelper.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,25 @@ public static void SetIsClosable(TabItem element, bool value)
206206
#endregion
207207

208208

209+
#region CloseRequestedEvent
210+
211+
public static readonly RoutedEvent CloseRequestedEvent = EventManager.RegisterRoutedEvent(
212+
"CloseRequested",
213+
RoutingStrategy.Bubble,
214+
typeof(EventHandler<TabViewTabCloseRequestedEventArgs>),
215+
typeof(TabItemHelper));
216+
217+
public static void AddCloseRequestedHandler(TabItem tabItem, EventHandler<TabViewTabCloseRequestedEventArgs> handler)
218+
{
219+
tabItem.AddHandler(CloseRequestedEvent, handler);
220+
}
221+
222+
public static void RemoveCloseRequestedHandler(TabItem tabItem, EventHandler<TabViewTabCloseRequestedEventArgs> handler)
223+
{
224+
tabItem.RemoveHandler(CloseRequestedEvent, handler);
225+
}
226+
227+
209228
private static void OnLoaded(object sender, RoutedEventArgs e)
210229
{
211230
TabItem TabItem = sender as TabItem;
@@ -257,6 +276,16 @@ void ExecutedCustomCommand(object sender, ExecutedRoutedEventArgs e)
257276
var eargs = new TabViewTabCloseRequestedEventArgs(TabControlHelper.TabCloseRequestedEvent, item.Content, item);
258277
tabControl.RaiseEvent(eargs);
259278

279+
// According to WinUI 3 behavior, the TabView's CloseRequested will be fired first,
280+
// then the TabItem's CloseRequested will be fired after that.
281+
// Since WinUI 3 does not have a 'routed' event for TabItem CloseRequested, we may apply
282+
// the same logic here, but adopting a handled check for TabItem CloseRequested event.
283+
// If this is inappropriate, feel free to propose a change.
284+
if (!eargs.Handled)
285+
{
286+
item.RaiseEvent(new TabViewTabCloseRequestedEventArgs(CloseRequestedEvent, item.Content, item));
287+
}
288+
260289
e.Handled = true;
261290
}
262291

0 commit comments

Comments
 (0)