* 重构多页面框架传值

This commit is contained in:
Sunny 2022-08-25 23:25:33 +08:00
parent 93c7441803
commit 15b67be54a
4 changed files with 67 additions and 56 deletions

View File

@ -62,33 +62,4 @@ namespace Sunny.UI
public delegate void OnSelectionChanged(object sender, UITextBoxSelectionArgs e); public delegate void OnSelectionChanged(object sender, UITextBoxSelectionArgs e);
public delegate void OnDateTimeChanged(object sender, UIDateTimeArgs e); public delegate void OnDateTimeChanged(object sender, UIDateTimeArgs e);
public class UIPageParamsArgs : EventArgs
{
public UIPage Page { get; set; }
public object Value { get; set; }
public UIParamSourceType SourceType { get; set; }
public UIPageParamsArgs()
{
}
public UIPageParamsArgs(UIPage page, object value, UIParamSourceType sourceType)
{
Page = page;
Value = value;
SourceType = sourceType;
}
}
public enum UIParamSourceType
{
Frame,
Page
}
public delegate bool OnReceiveParams(object sender, UIPageParamsArgs e);
} }

View File

@ -2196,36 +2196,43 @@ namespace Sunny.UI
public bool ExistPage(Guid pageGuid) => GetPage(pageGuid) != null; public bool ExistPage(Guid pageGuid) => GetPage(pageGuid) != null;
public bool SendParamToPage(int pageIndex, UIPage sourcePage, object value) public bool SendParamToPage(int pageIndex, UIPageParamsArgs e)
{ {
SetDefaultTabControl(); SetDefaultTabControl();
UIPage page = GetPage(pageIndex); UIPage page = GetPage(pageIndex);
if (page == null) return false; page?.DoReceiveParams(e);
return page.DoReceiveParams(new UIPageParamsArgs(sourcePage, value, UIParamSourceType.Page)); return e.Handled;
} }
public bool SendParamToPage(Guid pageGuid, UIPage sourcePage, object value) public bool SendParamToPage(Guid pageGuid, UIPageParamsArgs e)
{ {
SetDefaultTabControl(); SetDefaultTabControl();
UIPage page = GetPage(pageGuid); UIPage page = GetPage(pageGuid);
if (page == null) return false; page?.DoReceiveParams(e);
return page.DoReceiveParams(new UIPageParamsArgs(sourcePage, value, UIParamSourceType.Page)); return e.Handled;
} }
public bool SendParamToPage(int pageIndex, object value) public bool SendParamToPage(int pageIndex, object value)
{ {
SetDefaultTabControl(); SetDefaultTabControl();
UIPage page = GetPage(pageIndex); UIPage page = GetPage(pageIndex);
if (page == null) return false; var args = new UIPageParamsArgs(null, value, UIParamSourceType.Frame);
return page.DoReceiveParams(new UIPageParamsArgs(null, value, UIParamSourceType.Frame)); page?.DoReceiveParams(args);
return args.Handled;
} }
public bool DoReceiveParams(UIPageParamsArgs e) public bool SendParamToPage(Guid pageGuid, object value)
{ {
bool result = false; SetDefaultTabControl();
if (ReceiveParams != null) UIPage page = GetPage(pageGuid);
result = ReceiveParams.Invoke(this, e); var args = new UIPageParamsArgs(null, value, UIParamSourceType.Frame);
return result; page?.DoReceiveParams(args);
return args.Handled;
}
public void DoReceiveParams(UIPageParamsArgs e)
{
ReceiveParams?.Invoke(this, e);
} }
public event OnReceiveParams ReceiveParams; public event OnReceiveParams ReceiveParams;

View File

@ -52,11 +52,11 @@ namespace Sunny.UI
bool ExistPage(Guid pageGuid); bool ExistPage(Guid pageGuid);
public bool SendParamToPage(int pageIndex, UIPage sourcePage, object value); bool SendParamToPage(int pageIndex, UIPageParamsArgs e);
public bool SendParamToPage(Guid pageGuid, UIPage sourcePage, object value); bool SendParamToPage(Guid pageGuid, UIPageParamsArgs e);
public bool DoReceiveParams(UIPageParamsArgs e); void DoReceiveParams(UIPageParamsArgs e);
void Init(); void Init();
@ -67,7 +67,40 @@ namespace Sunny.UI
List<T> GetPages<T>() where T : UIPage; List<T> GetPages<T>() where T : UIPage;
void DealPageAdded(UIPage page); void DealPageAdded(UIPage page);
void DealPageSelected(UIPage page); void DealPageSelected(UIPage page);
void DealPageRemoved(UIPage page); void DealPageRemoved(UIPage page);
} }
public class UIPageParamsArgs : EventArgs
{
public UIPage Page { get; set; }
public object Value { get; set; }
public UIParamSourceType SourceType { get; set; }
public bool Handled { get; set; } = false;
public UIPageParamsArgs()
{
}
public UIPageParamsArgs(UIPage page, object value, UIParamSourceType sourceType)
{
Page = page;
Value = value;
SourceType = sourceType;
}
}
public enum UIParamSourceType
{
Frame,
Page
}
public delegate void OnReceiveParams(object sender, UIPageParamsArgs e);
} }

View File

@ -834,28 +834,28 @@ namespace Sunny.UI
public bool SendParamToFrame(object value) public bool SendParamToFrame(object value)
{ {
if (Frame == null) return false; var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page);
return Frame.DoReceiveParams(new UIPageParamsArgs(this, value, UIParamSourceType.Page)); Frame?.DoReceiveParams(args);
return args.Handled;
} }
public bool SendParamToPage(int pageIndex, object value) public bool SendParamToPage(int pageIndex, object value)
{ {
if (Frame == null) return false; var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page);
return Frame.SendParamToPage(pageIndex, this, value); Frame?.SendParamToPage(pageIndex, args);
return args.Handled;
} }
public bool SendParamToPage(Guid pageGuid, object value) public bool SendParamToPage(Guid pageGuid, object value)
{ {
if (Frame == null) return false; var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page);
return Frame.SendParamToPage(pageGuid, this, value); Frame?.SendParamToPage(pageGuid, args);
return args.Handled;
} }
public bool DoReceiveParams(UIPageParamsArgs e) public void DoReceiveParams(UIPageParamsArgs e)
{ {
bool result = false; ReceiveParams?.Invoke(this, e);
if (ReceiveParams != null)
result = ReceiveParams.Invoke(this, e);
return result;
} }
public event OnReceiveParams ReceiveParams; public event OnReceiveParams ReceiveParams;