Skip to content

Commit 1e7103f

Browse files
committed
feat: Add support for CustomVisualStateManager
1 parent 93afebe commit 1e7103f

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

src/Uno.UI/Generated/3.0.0.0/Windows.UI.Xaml/VisualStateManager.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace Windows.UI.Xaml
77
#endif
88
public partial class VisualStateManager : global::Windows.UI.Xaml.DependencyObject
99
{
10-
#if __ANDROID__ || __IOS__ || NET461 || __WASM__ || __SKIA__ || __NETSTD_REFERENCE__ || __MACOS__
10+
#if false
1111
[global::Uno.NotImplemented("__ANDROID__", "__IOS__", "NET461", "__WASM__", "__SKIA__", "__NETSTD_REFERENCE__", "__MACOS__")]
1212
public static global::Windows.UI.Xaml.DependencyProperty CustomVisualStateManagerProperty { get; } =
1313
Windows.UI.Xaml.DependencyProperty.RegisterAttached(
@@ -34,14 +34,14 @@ protected void RaiseCurrentStateChanged( global::Windows.UI.Xaml.VisualStateGro
3434
// Skipping already declared method Windows.UI.Xaml.VisualStateManager.GoToStateCore(Windows.UI.Xaml.Controls.Control, Windows.UI.Xaml.FrameworkElement, string, Windows.UI.Xaml.VisualStateGroup, Windows.UI.Xaml.VisualState, bool)
3535
// Skipping already declared method Windows.UI.Xaml.VisualStateManager.GetVisualStateGroups(Windows.UI.Xaml.FrameworkElement)
3636
// Forced skipping of method Windows.UI.Xaml.VisualStateManager.CustomVisualStateManagerProperty.get
37-
#if __ANDROID__ || __IOS__ || NET461 || __WASM__ || __SKIA__ || __NETSTD_REFERENCE__ || __MACOS__
37+
#if false
3838
[global::Uno.NotImplemented("__ANDROID__", "__IOS__", "NET461", "__WASM__", "__SKIA__", "__NETSTD_REFERENCE__", "__MACOS__")]
3939
public static global::Windows.UI.Xaml.VisualStateManager GetCustomVisualStateManager( global::Windows.UI.Xaml.FrameworkElement obj)
4040
{
4141
return (global::Windows.UI.Xaml.VisualStateManager)obj.GetValue(CustomVisualStateManagerProperty);
4242
}
4343
#endif
44-
#if __ANDROID__ || __IOS__ || NET461 || __WASM__ || __SKIA__ || __NETSTD_REFERENCE__ || __MACOS__
44+
#if false
4545
[global::Uno.NotImplemented("__ANDROID__", "__IOS__", "NET461", "__WASM__", "__SKIA__", "__NETSTD_REFERENCE__", "__MACOS__")]
4646
public static void SetCustomVisualStateManager( global::Windows.UI.Xaml.FrameworkElement obj, global::Windows.UI.Xaml.VisualStateManager value)
4747
{

src/Uno.UI/UI/Xaml/VisualStateManager.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,19 @@ internal static void SetVisualStateManager(IFrameworkElement obj, VisualStateMan
9898

9999
#endregion
100100

101+
#region CustomVisualStateManager Attached Property
102+
public static DependencyProperty CustomVisualStateManagerProperty { get; } = DependencyProperty.RegisterAttached(
103+
"CustomVisualStateManager", typeof(VisualStateManager),
104+
typeof(VisualStateManager),
105+
new FrameworkPropertyMetadata(default(VisualStateManager)));
106+
107+
public static VisualStateManager GetCustomVisualStateManager(FrameworkElement obj)
108+
=> (VisualStateManager)obj.GetValue(CustomVisualStateManagerProperty);
109+
110+
public static void SetCustomVisualStateManager(FrameworkElement obj, VisualStateManager value)
111+
=> obj.SetValue(CustomVisualStateManagerProperty, value);
112+
#endregion
113+
101114
public static bool GoToState(Control control, string stateName, bool useTransitions)
102115
{
103116
var templateRoot = control.GetTemplateRoot();
@@ -147,12 +160,12 @@ public static bool GoToState(Control control, string stateName, bool useTransiti
147160
return false;
148161
}
149162

150-
var vsm = GetVisualStateManager(control);
163+
var vsm = GetCustomVisualStateManager(control) ?? GetVisualStateManager(control);
151164
if (vsm is null)
152165
{
153166
if (_log.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
154167
{
155-
_log.DebugFormat("Failed to set state [{0}], there is no VisualStateManagr on [{1}]", stateName, control);
168+
_log.DebugFormat("Failed to set state [{0}], there is no VisualStateManager on [{1}]", stateName, control);
156169
}
157170

158171
return false;

0 commit comments

Comments
 (0)