* 重构多页面框架传值

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 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 SendParamToPage(int pageIndex, UIPage sourcePage, object value)
public bool SendParamToPage(int pageIndex, UIPageParamsArgs e)
{
SetDefaultTabControl();
UIPage page = GetPage(pageIndex);
if (page == null) return false;
return page.DoReceiveParams(new UIPageParamsArgs(sourcePage, value, UIParamSourceType.Page));
page?.DoReceiveParams(e);
return e.Handled;
}
public bool SendParamToPage(Guid pageGuid, UIPage sourcePage, object value)
public bool SendParamToPage(Guid pageGuid, UIPageParamsArgs e)
{
SetDefaultTabControl();
UIPage page = GetPage(pageGuid);
if (page == null) return false;
return page.DoReceiveParams(new UIPageParamsArgs(sourcePage, value, UIParamSourceType.Page));
page?.DoReceiveParams(e);
return e.Handled;
}
public bool SendParamToPage(int pageIndex, object value)
{
SetDefaultTabControl();
UIPage page = GetPage(pageIndex);
if (page == null) return false;
return page.DoReceiveParams(new UIPageParamsArgs(null, value, UIParamSourceType.Frame));
var args = 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;
if (ReceiveParams != null)
result = ReceiveParams.Invoke(this, e);
return result;
SetDefaultTabControl();
UIPage page = GetPage(pageGuid);
var args = new UIPageParamsArgs(null, value, UIParamSourceType.Frame);
page?.DoReceiveParams(args);
return args.Handled;
}
public void DoReceiveParams(UIPageParamsArgs e)
{
ReceiveParams?.Invoke(this, e);
}
public event OnReceiveParams ReceiveParams;

View File

@ -52,11 +52,11 @@ namespace Sunny.UI
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();
@ -67,7 +67,40 @@ namespace Sunny.UI
List<T> GetPages<T>() where T : UIPage;
void DealPageAdded(UIPage page);
void DealPageSelected(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)
{
if (Frame == null) return false;
return Frame.DoReceiveParams(new UIPageParamsArgs(this, value, UIParamSourceType.Page));
var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page);
Frame?.DoReceiveParams(args);
return args.Handled;
}
public bool SendParamToPage(int pageIndex, object value)
{
if (Frame == null) return false;
return Frame.SendParamToPage(pageIndex, this, value);
var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page);
Frame?.SendParamToPage(pageIndex, args);
return args.Handled;
}
public bool SendParamToPage(Guid pageGuid, object value)
{
if (Frame == null) return false;
return Frame.SendParamToPage(pageGuid, this, value);
var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page);
Frame?.SendParamToPage(pageGuid, args);
return args.Handled;
}
public bool DoReceiveParams(UIPageParamsArgs e)
public void DoReceiveParams(UIPageParamsArgs e)
{
bool result = false;
if (ReceiveParams != null)
result = ReceiveParams.Invoke(this, e);
return result;
ReceiveParams?.Invoke(this, e);
}
public event OnReceiveParams ReceiveParams;